banner
Light

Light Log

做充满希望的动物
x
github
bilibili
steam

Google Apps Script学习记录

gas-eyecatch-960x504

第一次听说 GAS(Google Apps Script)是在入职现在公司实习岗位的时候。前辈让我接手一个公司内部用的小工具的后续开发。那个工具就是用 GAS 写的。依托于 Google 本家,它无缝和 G 家的各类工具集成,开放的 API 也非常全面而好用(当然你也可以在其他语言中调用谷歌的 API,只不过 GAS 是无缝集成的所以体验最好罢了)。印象最深刻的是它对于 Google Spreadsheet 和 Google Calendar 的支持。我在空闲时间用 GAS 给研究室放在 Spreadsheet 上的日程表写了一个自动导入 Calendar 的功能。基本上完全就是无脑套官方给的接口,敲代码丝滑无比到令人感动。如果你平时总是被各种奇葩文档折磨,请务必体验一下 GAS。可能作为一门脚本语言(或者说平台),它也有复杂的一面,但是当只是想用它做一个简单的 G 家服务的自动化和协同的时候,它在刚入门的时候就能提供非常美好的体验。

关于本地化与版本控制#

GAS 提供了云端的编辑器,同时也支持简单的版本控制。但是对于用习惯了 Git 和 Github 的人而言,本地化可能是个更好的选择。Google 的开发者们为此提供了一个很棒的开源工具:Clasp

安装 Clasp#

Clasp 被封装为一个 Package,如果你本地安装了 npm,那么你只需要运行:

npm install -g @google/clasp

如果本地没有安装 npm, 我的建议是安装一个,我们可以从这里跳转到 Node.js 的下载界面。他们提供多平台的支持,另友情提醒请不要盲目追更新版本,LTS 版本是更稳妥的选择(没有人会愿意看到每次运行程序的时候都会弹出几行鲜红的警告)。

在我们开始用 clasp 构建我们的脚本和应用之前,还需要完成一件要紧的事情。那就是登录我们的谷歌账号。不然谷歌会拒绝我们和没有连接权限的云端进行交互。我们可以运行以下命令:

clasp login

这会打开本地默认的浏览器,要求我们登录谷歌账号。我们需要登陆那个想要在上面部署应用或者脚本的账号。

当然,如果你不信任你的电脑所处的环境,在每一次离开的时候,你可以选择登出,这也只需要简单的一行命令:

clasp logout

好了,到这里我们就完成了准备工作,可以开始用 clasp 在本地部署我们的项目了。

在本地部署项目#

利用 Clasp,我们可以很容易的在本地创建一个新项目:

clasp create

这会在当前工作目录创建一个默认的新项目。当然它也提供了一些更丰富的选项,我们可以用--title "My Script"来指定项目的名称, 也可以用--type指定这个项目的类型。当然通过--rootDir选项,我们也可以指定新项目存放的位置。另外有一个和 G 家的服务息息相关的选项--parentId "1D_Gxyv*****************************NXO7o",这可以让我们把项目绑定到某一个特定的服务,比如说某个 Google SpreadSheet。对了,这里的 ID 我们可以在对应服务的网址上找到:docs.google.com/presentation/d/{id}/edit

当然更多的情况下,我们往往是针对某一个已经存在的服务去编写项目,这时候clasp clone命令就很有用。我们可以直接用对应服务的网址来把对应的脚本项目复制到本地:

clasp clone "https://script.google.com/d/15ImUCpyi1Jsd8yF8Z6wey_7cw793CymWTLxOqwMka3P1CzE5hQun6qiC/edit"

到这里,我们已经成功在本地部署了项目,当我们想要发布到云端或者从云端拉取的时候,我们可以使用clasp pullclasp push命令,请务必注意这两个命令和 Git 的根本不是同一回事,它们只会单纯的覆盖掉原先的内容。友善的建议是,避免使用clasp pull,并且只在必要的时候使用clasp push。当然,clasp 的开发团队比较细心,使用clasp pull的时候,他们通常不会直接覆盖掉我们本地的文件,当 clasp 检测到本地存在同名文件的时候,它会结束进程并且提醒我们这一点。

使用 Git 来对本地的 GAS 项目进行管理#

我们指望不上 GAS 自己在云端内置的版本管理系统,它只提供了有限次数的版本,并且各类操作也没有 Git 那么完善。所以我们下一步的目标就是使用 Git 和 Github 来对本地的项目进行管理。其实无非就是在本地新初始化一个 Git 仓库而已。

我们把工作目录跳转到对应项目内。然后初始化一个 Git 仓库:

git init

如果只是想要在本地进行版本管理,那么到这里就可以照常使用 git 了。但是如果还想要上传到 Github 等云端仓库,那么我们还需要多几步。

首先我们需要编写.gitignore 文件,来让 Git 忽略掉一些只需要保留在本地,而且也不希望 Git 去管理的文件。如果我们查看 clasp 在本地给我们创建的项目,我们就会发现有一个隐藏的.clasp.json 文件,里面记录了我们的 script id 和 parent id,用于 clasp 定位云端上的相关文件。显然这是不需要 Git 去管理的。所以我们可以在.gitignore 里面忽略掉它。

touch .gitignore
echo ".clasp.json" > .gitignore

当然,你也可以用编辑器(比如 vscode)打开文档编辑后保存。

接下来我们就可以正常执行git add等命令了。

git add --all
git commit  -m "init"

最后,你可以在 Github 上创建一个新仓库,并将本地的仓库推送上去。

未完待续#

加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。