このエラーはマニフェストの変更で直せる→Expected one of [USER_ACCESSING, USER_DEPLOYING, SERVICE_ACCOUNT, UNKNOWN_EXECUTE_AS] for “webapp.executeAs”, but was “USER”

この記事の内容について、業務や開発でお困りの場合は個別に対応できます。

【解決録】Apps Script マニフェストの “webapp.executeAs” エラー対処法

Google Apps Script を clasp でデプロイしようとした際に、次のようなエラーに遭遇しました:

"appsscript.json" has errors: Invalid manifest:
Expected one of [USER_ACCESSING, USER_DEPLOYING, SERVICE_ACCOUNT, UNKNOWN_EXECUTE_AS]
for "webapp.executeAs", but was "USER".

この記事では、このエラーの原因と解決方法をまとめます。


原因

appsscript.json に記述している webapp.executeAs の値が間違っているためです。Google Apps Script のマニフェストでは、webapp.executeAs に指定できる値が 決まっている定数 だけです。

許可されている値は以下の通り:

  • USER_ACCESSING : Web アプリを開いたユーザー権限で実行
  • USER_DEPLOYING : デプロイしたユーザー権限で実行
  • SERVICE_ACCOUNT : サービスアカウントを利用するケース(特殊用途)
  • UNKNOWN_EXECUTE_AS : 将来的な互換性のための予約値

つまり、単純に "USER" という文字列は 無効 なのです。


解決方法

1. appsscript.json を修正

以下のように USER を正しい定数に置き換えます。

{
  "timeZone": "Asia/Tokyo",
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "webapp": {
    "access": "ANYONE",            
    "executeAs": "USER_DEPLOYING"   
  }
}

2. 再度 clasp push

修正後に clasp push を実行すると、エラーは解消され、スクリプトが正常にアップロードされます。

✔ Manifest file has been updated. Do you want to push and overwrite? Yes
Pushed 2 files.
└─ appsscript.json
└─ your_script.js

どちらを選ぶべき?

  • USER_ACCESSING : ユーザーごとに権限を切り替えたい場合(例:自分のGoogle Driveにだけアクセスさせたいアプリ)
  • USER_DEPLOYING : デプロイした人の権限で一律実行したい場合(例:Bot的な処理や共通リソースへのアクセス)

大半のケースでは USER_DEPLOYING を指定するのが安全です。


まとめ

  • エラー原因は "USER" が無効な値だったこと
  • 許されるのは [USER_ACCESSING, USER_DEPLOYING, SERVICE_ACCOUNT, UNKNOWN_EXECUTE_AS]
  • 修正は appsscript.json を正しい定数に直すだけ

ニッチですが、clasp を触ると必ずぶつかる可能性がある罠なので、備忘録として残しておきます。

ZIDOOKA!

この記事の内容について、対応できます

この記事に関連する技術トラブルや開発上の問題について個別対応を行っています。

個別対応は3,000円〜 内容・工数により事前にお見積りします
最後までお読みいただきありがとうございました

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

AI活用に関するポリシー

当サイトでは、記事の執筆補助にAIを活用する場合がありますが、全面的な委任は行いません。