CLASPを使ってGAS (Google App Script)をデプロイする
GAS(Google App Script)を使おうと思ったのですが、Serverless Framework的な管理ツールが欲しかったので、ますCLASPから触ってみました。 CLIのインストール CLASPはnode […]
広告ここから
広告ここまで
目次
GAS(Google App Script)を使おうと思ったのですが、Serverless Framework的な管理ツールが欲しかったので、ますCLASPから触ってみました。
CLIのインストール
CLASPはnodejs製のライブラリなので、npmでインストールします。
$ npm i -g @google/clasp
$ clasp -v
2.2.1
o$ clasp
Usage: clasp <command> [options]
clasp - The Apps Script CLI
Options:
-v, --version
-h, --help output usage information
Commands:
login [options] Log in to script.google.com
logout Log out
create [options] Create a script
clone [options] [scriptId] [versionNumber] Clone a project
pull [options] Fetch a remote project
push [options] Update the remote project
status [options] Lists files that will be pushed by clasp
open [options] [scriptId] Open a script
deployments List deployment ids of a script
deploy [options] Deploy a project
undeploy [options] [deploymentId] Undeploy a deployment of a project
version [description] Creates an immutable version of the script
versions List versions of a script
list List App Scripts projects
logs [options] Shows the StackDriver logs
run [options] [functionName] Run a function in your Apps Scripts project
apis [options] List, enable, or disable APIs
list
enable <api>
disable <api>
help Display help
setting|settings [settingKey] [newValue] Update <settingKey> in .clasp.json
* Any other command is not supported
ログイン
Googleアカウントにソースをデプロイするため、まずログインする必要があります。
$ clasp login
Chromeが立ち上がり、認証系のフロー操作を促されますので終わらせましょう。
ログインに成功すると、~/.clasprc.json
が生成されます。
作成
ディレクトリの作成はDIYの様子です、必要なファイルの設置やGASプロジェクトの作成をやってくれます。
$ mkdir calander-app && cd calander-app
$ clasp create calander-app --title CalanderApp --rootDir src
? Create which script?
❯ standalone
docs
sheets
slides
forms
webapp
api
エラーが表示されることもあります。以下のメッセージが表示された時は、App Script APIを有効化しましょう。
User has not enabled the Apps Script API. Enable it by visiting https://script.google.com/home/usersettings then retry. If you enabled this API recently, wait a few minutes for the action to propagate to our systems and retry.
コードを記述する
rootをsrcに設定していますが、package.jsonは.clasp.json
の配置されているディレクトリで問題ありません。
$ npm init -y
# TypeScriptで書くならこれも入れる
$ yarn add -D @types/google-apps-script
関数をグローバル変数に定義する必要がありますので、場合によっては以下のような定義が必要になります。
import {getUpdatedCalander} from './Code'
// プロパティが無いと言われるのを防ぐ程度の型定義
declare const global: {
[x: string]: any ;
}
global.getUpdatedCalander = function(e: any) {
return getUpdatedCalander(e)
}
コードをアップロード / デプロイする
コードのアップロードは、clasp push
で実行できます。
プロジェクトのデプロイはclasp deploy
なので混同しないように注意しましょう。