tech.sinayaka.com

GASのOAuthトークンが半年で失効する話と対策

2026-04-18
2026-06-05
3分
534語
Web技術 GASGoogleAppsScriptOAuth

お問い合わせフォームからGASへの送信が急に動かなくなった。GASのログシートを確認すると、最後の記録が半年以上前だった。

何が起きていたか

Google Apps ScriptのWebアプリは、スクリプトがGoogleのサービス(スプレッドシートへの書き込みなど)にアクセスするためにOAuth認可が必要だ。

この認可トークンは約6ヶ月間スクリプトが実行されないと失効する

問い合わせが来なければGASは動かず、トークンが切れて、次に問い合わせが来ても実行権限がないため動かない、という負のループになる。

解決方法

ブラウザでGASのWebアプリURLに直接アクセスすると、OAuth認可フローが走ってトークンが更新される。これで一時的に復旧する。

ただし根本解決にはならない。また半年後に切れる。

恒久対策:keepAliveトリガー

GASのエディタでスクリプトを定期実行するトリガーを設定する。月1回の実行でトークンの失効を防げる。

まずスクリプトに何もしない関数を追加する:

function keepAlive() {
  console.log('keepAlive: ' + new Date());
}

次にトリガーを設定する:

  1. GASエディタ左メニューの時計アイコン「トリガー」を開く
  2. 右下の「トリガーを追加」をクリック
  3. 以下の通り設定して保存
項目設定値
実行する関数keepAlive
イベントのソース時間主導型
タイプ月ベースのタイマー
日付1日
時刻午前0時〜1時

これで毎月1日にスクリプトが自動実行され、OAuthトークンが維持される。

承認フローについて

ブラウザでGASのURLにアクセスしたときに出る認可画面は「このブラウザを許可する」ではなく「このスクリプトがGoogleのサービスにアクセスすることをGoogleアカウントとして承認する」という意味だ。ブラウザやデバイスに紐づくものではなく、Googleアカウントとスクリプトの関係に対する一回限りの認可だ。

keepAliveトリガーを設定した後は、問い合わせが来なくても毎月スクリプトが動くのでトークンは維持される。設定しておけばあとは放置でいい。




Copyright 2026
サイトマップ