claspを使ってGoogle Apps Scriptのスクリプトを作成する
Blog
claspはGoogleドライブにあるGoogle Apps Scriptプロジェクトを操作できるCLIツールです。
claspでGoogle Apps Script(以降、GAS)を扱うメリットは次のとおり。
- ローカルでファイルを作成するので、Git管理できる。
- TypeScriptをサポートしており(v1.5.0より対応)、ES2015で書ける。
この記事では、clasp
を利用してGASのスクリプトファイルをTypeScriptで作成しアップロードする手順を説明します。
動作を確認した環境
- Node.js v8.15.1
- clasp v2.1.0
claspのインストールとログイン
- 次のコマンドを実行し、claspをインストールします。
$ npm i @google/clasp -g
Installed @google/clasp@2.1.0
Googleアカウントにログインします。次のコマンドを実行すると、ブラウザが立ち上がります。Googleアカウントへのログインを要求されるのでログインします。
$ clasp login Logging in globally... 🔑 Authorize clasp by visiting this url: https://accounts.google.com/xxx Authorization successful.
Google Apps Script APIを有効化します。
- Google Apps Script のユーザー設定を開きます。
- [Google Apps Script API]をクリックし、オンに設定します。
プロジェクトの作成
clasp create
コマンドでプロジェクトを作成する。 コマンド実行後、プロジェクトの種類を選択します。今回はスクリプトファイルのみのため、「standalone」を選択します。
mkdir sample
cd sample
$ clasp create sample
? Clone which script? (Use arrow keys)
❯ standalone
docs
sheets
slides
forms
webapp
api
Created new standalone script: https://script.google.com/d/xxxxx/edit
Cloned 1 file.
└─ appsscript.json
appsscript.json
が作成されます。
npm init
で初期化します。 基本的にEnterキーでスキップしますが、entry point
のときだけ、「index.ts
」と入力しておきます。 最後にIs this OK? (yes)
と尋ねられるので、「yes
」と入力します。$ npm init Press ^C at any time to quit. package name: (sample) version: (1.0.0) description: entry point: (index.js) index.ts test command: git repository: keywords: author: license: (ISC) About to write to /Users/chick-p/workspace/sample/package.json: { "name": "sample", "version": "1.0.0", "description": "", "main": "index.ts", "dependencies": {}, "devDependencies": {}, "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC" } Is this OK? (yes) yes
GASの型定義ファイルをインストールします。
npm i @types/google-apps-script --save-dev
スクリプトファイルを作成します。
vim index.ts
// index.ts function main() { console.log('Hello World'); }
clasp push
コマンドで、クラウドのGASプロジェクトへアップロードします。clasp push
動作確認
クラウドのGASプロジェクトを確認すると、GASフォーマットに変換されたファイル(index.gs
)がアップロードされています。
// index.gs
// Compiled using ts2gas 1.6.2 (TypeScript 3.4.4)
var exports = exports || {};
var module = module || { exports: exports };
function main() {
console.log('Hello World');
}
以上。