clasp を使うと、GAS をTypeScriptで書くことができる。 clasp 1.5.0 でサポートされるようになった。
https://github.com/google/clasp/blob/master/docs/typescript.md
ローカルでtsファイルで書いたGASをpushすると、自動でトランスパイルしてからアップロードしてくれる
GASをTSで書けるようにする
claspのプロジェクトで、google-apps-scriptの型定義を追加
$ npm install -D @types/google-apps-script
これによって、IDE上でSpreadsheetAppなどGAS固有の定義も補完されるようになる
tsconfig.jsonを追加する
tsconfig.json
{
"compilerOptions": {
"lib": [
"esnext"
],
"target": "ES2019",
"experimentalDecorators": true,
"esModuleInterop": true
}
}
tsファイルを作ってpushする
hello.ts
const greeter = (person: string) => {
return `Hello, ${person}!`;
}
function testGreeter() {
const user = 'Grant';
Logger.log(greeter(user));
}
push
$ clasp push
プロジェクトを開く
$ clasp open
.gsファイルに変換されたファイルが作成されている
注意
clasp pull
すると、変換されたjsファイルがダウンロードされる- 基本的にはローカルでTypeScriptで開発してpushするという一方通行になるので、複数人で開発するときにもそのフローを徹底する
- よくわからずにWeb上で編集する人がいると、大変なことになる(実体験)