Google Apps Script(GAS)を実行した際、実行ログに以下のようなエラーが表示され、処理が止まってしまうことがあります。
We're sorry, a server error occurred. Please wait a bit and try again.
場合によっては、同時に TypeError: Cannot read properties of undefined が表示されることもあります。
このメッセージは一見すると「Google側の一時的なサーバー障害」のように見えますが、実際にはスクリプトの設定や権限、書き方に問題があるケースがほとんどです。
この記事では、このエラーが発生する主な原因と、具体的な対処法を解説します。
このエラーの正体
このエラーメッセージは、GASの実行環境が「具体的なエラー原因を特定できなかった(または表示できなかった)」場合に表示される汎用的なメッセージです。
特に DriveApp(Googleドライブ操作)や外部API連携を行う際に頻発します。本当の原因は「権限不足」や「設定ミス」であっても、表面上はすべて「サーバーエラー」として丸められてしまうため、デバッグが難しくなります。
主な原因と対処法
発生頻度の高い順に、原因と解決策を紹介します。
1. 標準GCPプロジェクトを使用しているが、Drive APIが無効
GASプロジェクトを「標準のGoogle Cloud Platform(GCP)プロジェクト」に紐付けている場合、GCP側で明示的にAPIを有効化しないと、このエラーが発生することがあります。
対処法:
- GASエディタの「プロジェクトの設定」から、紐付いているGCPプロジェクト番号を確認します。
- Google Cloud Consoleを開き、該当プロジェクトを選択します。
- 「APIとサービス」>「ライブラリ」へ移動します。
- Google Drive API を検索し、「有効にする」をクリックします。
- GASエディタに戻り、「サービス」の「+」ボタンから Drive API を追加します。
2. ライブラリのバージョンが「HEAD(開発モード)」になっている
外部ライブラリを使用している場合、バージョン指定を「HEAD(最新)」にしていると、スクリプトのオーナー以外が実行した際にこのエラーが発生することがあります。
対処法:
- GASエディタの「ライブラリ」設定を開きます。
- 使用しているライブラリのバージョンを「HEAD」から特定の数字(固定バージョン)に変更して保存します。
3. 実行ユーザーにファイルのアクセス権限がない
DriveApp.getFileById(id) などで指定したファイルやフォルダに対して、現在の実行ユーザーがアクセス権を持っていない場合にも発生します。
- 手動実行: あなたのアカウントに権限はありますか?
- トリガー実行: トリガーを作成したユーザー(実行主体)に権限はありますか?
- Webアプリ: Execute as(実行ユーザー)の設定は Me ですか? User accessing the web app ですか?
対処法:
- 対象ファイルの共有設定を確認し、実行ユーザーに「閲覧者」以上の権限を付与してください。
- 共有ドライブ内のファイルの場合、組織のポリシーで外部からのアクセスが制限されていないか確認してください。
4. 存在しないIDや不正なIDを指定している
getFileById に渡しているIDが間違っている、またはファイルが削除されている場合、通常は「Exception: File not found」になりますが、状況によっては「Server error」として表示されることがあります。
対処法:
- IDが正しいか、余計なスペースが含まれていないか確認してください。
- try-catch 構文を使用して、エラーを正しく捕捉できるか試してください。
function checkFile() {
const fileId = 'xxxxxxxx_your_file_id_xxxxxxxx';
try {
const file = DriveApp.getFileById(fileId);
Logger.log(file.getName());
} catch (e) {
Logger.log('Error caught: ' + e.message);
}
}
5. 本当にGoogle側の障害(稀なケース)
上記のいずれにも該当しない場合、本当にGoogleのバックエンドで一時的な障害が発生している可能性があります。
対処法:
- 数分〜数時間待ってから再実行してください。
- Google Workspace Status Dashboard を確認してください。
まとめ
「We're sorry, a server error occurred」が出たときは、Googleのせいにせず、まずは以下の設定を疑ってください。
- GCPプロジェクト連携時のAPI有効化忘れ(Drive APIなど)
- ライブラリのHEAD指定(オーナー以外実行時)
- ファイル・フォルダのアクセス権限
これらを見直すことで、多くの場合は解決します。
Category: GAS Tips
References:
- Google Apps Script – Drive Service https://developers.google.com/apps-script/reference/drive/drive-app
- Google Cloud Console – API Library https://console.cloud.google.com/apis/library