GAS(Google Apps Script) †
ライブラリ: 一つのGASを複数のスプレッドシート等で使う †
共通化したいGASファイル:
- 新規 > その他 > Google Apps Script。専用フォルダ(例:gas)作ってまとめたほうが良い。
- ファイル名がクラス名?になる。「-」等は省略されるので、CamelCaseで良いかも。(利用側で任意の名前(Identifer)を設定はできる)
- 他から利用するために、バージョンを保存する必要がある。リリースの度に必要
- ファイル > 版を管理 > 説明を記入 > Save new version
- 他から利用するために、スクリプトIDをコピー
- ファイル > オブジェクトのプロパティ > スクリプト IDをコピー
GASを利用したいスプレッドシート側:
- ツール > スクリプトエディタ を開く
- リソース > ライブラリ > Add a library でスクリプトIDを入れて、追加
- バージョンは最新、Identiferはクラス名?なので重複しない名前にする
- スクリプトエディタ側では、「Identifer.funcion()」で呼び出せるようになる。
GASを更新する場合:
- GAS側で新しいバージョンを保存
- 利用側で新しいバージョンを指定
ベストプラクティス †
コーディング規約/ガイドライン †
GitHub連携 †
clasp: cliでソースコードを扱う †
デフォルトではweb上エディタ上を使うが、gitや任意のエディタを使えるようにする。
- GoogleアカウントのGoogle Apps Script APIをオンにする
- node.js製ツールなので、Memo/Linux/anyenv#ide22883 を参考に入れる
- claspのインストール
yarn add global @google/clasp
- 表示されたURLを使いたいGoogleアカウントにサインインした状態で開く
clasp login
サンプル: GET/POSTを表示する †
function doGet(e) {
return HtmlService.createHtmlOutput(JSON.stringify(e));
}
function doPost(e) {
return ContentService.createTextOutput(e.postData.getDataAsString());
}
- /dev/path1/path2/?key1=val1 でアクセスした場合の結果
{
"parameter":{
"key1":"val1"
},
"contextPath":"",
"contentLength":-1,
"queryString":"key1=val1",
"parameters":{
"key1":[
"val1"
]
},
"pathInfo":"path1/path2/"
}
デプロイ †
devとprod用の異なるURLがある。
1度発行されたURLはコードを変えても変わらない
dev用:
- コードを変更する
- 公開 > ウェブアプリケーションとして導入 > 最新のコードのリンクをクリック
- https://script.google.com/macros/s/{dev用token}/dev
prod用:
- コードを変更する
- ファイル > 版の管理 > 新しいバージョンを保存
- 公開 > ウェブアプリケーションとして導入 > プロジェクトのバージョンで新しいバージョンを指定
- 現在のウェブ アプリケーションのURL
- https://script.google.com/macros/s/{prod用token}/exec
Logging †
- Logger.log()
- 表示 > ログに出る。
- doPost(), doGet(), 各トリガーで起動する場合は、Logger.log()に出ない。
GoogleフォームとSlack連携 †