clasp run で ローカルからGAS実行
clasp run をつかえば、コマンドからGASを実行できます。
clasp コマンドをうまく使えば便利かもしれないので、使い方を見ておく。
全体の流れ
結構手順が多いのです。
- clasp コマンドをインストール
- GASプロジェクトを設定
- GCPプロジェクトを作成設定
- GASとGCPを紐付け
- clasp と GASを紐付け・認証
- clasp に GCPを紐付け・認証
- clap run
run を使うまでの手順が、煩雑で多いのです。OAuth関連の設定が多くてね。
clasp run は GCP にリクエストを投げ、GCPが GAS api を叩き、最新のコードを実行し結果を返してくれます。
clasp インストール
npm で clasp をインストールします。
npm install -g @google/clasp
GAS プロジェクト作成
https://script.google.com/ にアクセスして、プロジェクトを新規作成。
GCP プロジェクトを新規作成
GCP コンソールにアクセスして、プロジェクトを作成
GCP で作って保存するもの
GCPのコンソールでは、次の情報取得とAPI有効化をやります。
プロジェクトの作成と保存は、煩雑なので記事の末尾にスクショ付きで書いておきます。→ GCPプロジェクトの手順
GAS に GCP を紐付け
プロジェクト番号(数値)をGASに設定する
プロジェクト→ 設定
Google Cloud Platform(GCP)プロジェクト番号(数字)を貼り付ける。
clasp とGASを紐付け。
clasp login は終わっているものとします。
clone よる紐付け。
mkdir sample && cd sample clasp clone ${スクリプトID}
または、create による紐付け
create → standalone でローカルで新規作成し、リモートへpush します。
mkdir sample && cd sample clasp create myGas clasp push
claspプロジェクトと GCP を紐付け
ローカルプロジェクトを、GCPと紐付けします。
GCPでダウンロードした認証情報JSONをプロジェクトへ移動
JSONは、GCP→ 認証情報→ クライアント→ダウンロードボタンでダウンロード。
clasp_project_dir=~/sample mv client_secret_xxxx2697-xxxxonbxxxj.apps.googleusercontent.com.json \ ${clasp_project_dir}/creds.json
clasp に projectIDを登録
clasp コマンドでプロジェクトに紐付ける。
GCP で作成したプロジェクトID(英数字名前)を入れる。
GCP_PROJECT_ID=gas-sample-001 clasp setting projectId ${GCP_PROJECT_ID}
json からプロジェクトを認証
json認証情報を使って、プロジェクトをOAuthする。
clasp login --creds creds.json
ここでのログインは、プロジェクトがGCPへログインする。
ブラウザでOAuth
ブラウザが起動するので、GoogleアカウントでGCPのアカウントでログインして認証する。
終わったら次のような画面になる。
コードを書く。
エディタを開き。関数を作り return
を書く。忘れずにreturn
を書く。
return を書く理由は clasp run 実行後にコンソールに表示されるのが、関数の戻り値だから。
リモートへ送る
ローカルで作成したコードをscript.google.com へ push する。
clasp push
デプロイ(公開する)
GASのプロジェクト・ページへ移動して、デプロイを作る。
デプロイを作成
GASのプロジェクト画面→デプロイ→新規作成→歯車→実行可能API
clasp run 実行する
ようやく、本題の clasp run
が出来ます。
clasp run
実行結果(戻り値)
実行すると、関数の戻り値が表示されます。
実行結果(Console.log)
console.log
で出力した、実行ログは、clasp logs コマンドで確認します。
コードを更新して実行
次回以降は、push && run を繰り返せばいい。
clasp push clasp run myFunction
clasp run
は dev モードで動くので、push されたコードが常に実行される。
run 遅い
せっかくここまで設定したけど、push && run の clasp が遅い。表現したくないほど遅い。
本当に遅いんですよ。 push && run をするのに待たされる。
push に掛かる時間
run に掛かる時間
実行結果はスグ返るのに、終了が遅い。
実行自体はスグ終わります。その後なんの処理かわからないけど、終了処理で凄く待たされる。Ctrl-Cで中断したらプロジェクトの動作がおかしくなった。
clasp のclasp run 使えないかも。
CI/CD で回すならいいかも。
ローカルでコード書いて実行し、エラー見つけて修正、コード書いて実行みたいな使い方はとてもストレスなので使えないと思います。
自動実行をCI/CDでまわすなら、バックグラウンドで動くのでストレスなく使えるかもしれない。
git に push タイミングでGASにデプロイしてテストで実行する程度ならいいんじゃないですかね。
APEENDIX(GCPプロジェクト)
GCP プロジェクトの作成手順
GCP のプロジェクト作成で、GCP経由でGASのスクリプトを起動できるようにします。
保存するもの
プロジェクトを作成し、次のものを保存してclasp の設定に備える。
- プロジェクトID
- プロジェクト番号
- 認証情報JSONの取得
設定するもの
GCP のプロジェクトで次を設定し、APIが利用できるようにする。
- OAuth 同意画面
- OAuth デスクトップ・クライアント
- ライブラリ Gooogle App Script API
設定の流れ
設定は、次の流れで行う。
やることが多いです。
プロジェクトの新規作成
プロジェクト情報の確認
ここで、ID(名前)と番号(数字)をメモります。
OAuth 同意画面の作成
左上のメニュー → APIとサービス → OAuth同意画面
同意画面は、必須項目を埋めるだけでいい。必須項目はメアドくらい。
自分しか使わないし。考えることはない。
OAuth認証情報の作成
左上のメニュー → APIとサービス → 認証情報→認証情報を作成
クライアントIDを選ぶ
ここでは、クライアントを作るのでクライアントを選ぶ。
種類はデスクトップアプリ
種類の選択で、デスクトップアプリを選ぶ
JSONダウンロード
認証情報が作成されたら、デスクトップ用のJSONがダウンロードできる。
API の有効化
プロジェクトで Google App Script API 有効にする。
ライブラリにゆく
apps script api を有効にする。
GCP 準備完了
これでGCPの準備は出来ました。次の情報が得られているはずです。
- プロジェクトID
- プロジェクト番号
- 認証情報JSONの取得
これを、CLASPとGASに登録します。
プロジェクト番号(数字)は、GASへ登録
プロジェクトIDと認証情報は、clasp login で使います。
gcp 準備が完了したら、clasp をあとは実行するだけです。
GAS 目次
ひとまずここで筆を置きます。GASに関しては次が目次です。