【Google Sheets API v4】シートの書き込みで「Permisson Denied」が発生したときにチェックするポイント

1 min read読了の目安(約800字

TL;DR

Google Sheets API や Google Docs API で書き込みを行う場合は[共有]設定でサービスアカウントのメールアドレスを登録する。

Google Sheets API で書き込み時にエラーが発生

Google Sheets API v4 を用いてスプレッドシートに書き込みを行おうとしたら、以下のようなエラーが発生しました。

レスポンス
{
  // ...略...
  code: "403",
  message: "The caller does not have permission",
  status: "PERMISSION_DENIED"
}

読み取りは問題なくできるが、書き込みができない状態になっているようです。

対処法

少し調べたところ、こちらで解決策が見つかりました。

https://stackoverflow.com/questions/38949318/google-sheets-api-returns-the-caller-does-not-have-permission-when-using-serve

スプレッドシートの右上にある[共有]からAPIリクエストを送るときに使用しているサービスアカウントのメールアドレスを登録する必要があるようです。

サービスアカウントのメールアドレスはGCPコンソールのIAMで確認できます。

追加したら問題なく書き込みができるようになりました。スプレッドシートにアクセス可能なアカウントを一箇所で確認できるのは安心できて良いですね。