GoogleスプレッドシートでApps Scriptを初めて実行しようとすると、権限承認の画面が表示され、そこで「承認されていません」などのエラーが出て先に進めないことがあります。このエラーは、スクリプトがGoogleのサービスにアクセスするために必要な許可をユーザーがまだ与えていないことが原因です。本記事では、Apps Scriptの権限承認エラーが発生する仕組みと、初回認証を成功させるための具体的な手順を解説します。この記事を読めば、エラーを恐れずにスムーズにスクリプトを実行できるようになります。
【要点】Apps Scriptの権限承認エラーを直すための初回認証フロー
- スクリプトエディタで関数を実行して承認ダイアログを表示する: 初めての実行時にOAuth同意画面が自動で表示されるため、そこで権限を許可します。
- 承認後にエラーが続く場合はキャッシュクリアや権限の再取得を試みる: ブラウザのキャッシュをクリアしたり、スクリプトの権限をリセットすることで解決できます。
- 権限承認エラーの原因は未承認のスコープやアカウントの不一致: 要求されたスコープを確認し、正しいアカウントでログインしているかをチェックします。
ADVERTISEMENT
目次
Apps Scriptの権限承認エラーが発生する仕組み
Apps ScriptがGoogleスプレッドシートやGmailなどのGoogleサービスにアクセスするには、OAuth2.0という認証プロトコルを使用します。スクリプトが初めて実行される際、必要なスコープ(アクセス権限の範囲)をユーザーに確認し、許可を得るためのダイアログが表示されます。このダイアログで「許可」をクリックしないと、スクリプトはサービスにアクセスできず、エラーが発生します。エラーの原因としては、以下のようなものが考えられます。
まず、承認ダイアログが何らかの理由で表示されず、ユーザーが許可できていない場合です。また、スクリプトが必要とするスコープが、以前に許可したスコープと異なる場合にもエラーが発生します。さらに、複数のGoogleアカウントを使用している場合、意図しないアカウントで承認しようとしてエラーになることもあります。これらの原因を理解することで、適切な対処が可能になります。
初回認証を正しく行う手順
初回認証を成功させるための手順を、順を追って説明します。以下の手順に従えば、権限承認エラーを回避できます。
- スクリプトエディタを開く
Googleスプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選択します。スクリプトエディタが新しいタブで開きます。 - 関数を実行して承認ダイアログを表示する
スクリプトエディタで、実行したい関数(例:myFunction)を選択し、ツールバーの「実行」ボタンをクリックします。初回の実行時には、承認を求めるダイアログが表示されます。 - アカウントと権限を確認して許可する
ダイアログで、使用するGoogleアカウントが正しいことを確認します。次に、スクリプトが要求する権限の一覧が表示されるので、内容を確認し、「許可」をクリックします。これで認証が完了し、スクリプトが正常に実行されます。
承認後に「TypeError: Cannot read property ‘…’ of null」など別のエラーが表示される場合は、スクリプト自体のバグが疑われます。権限承認とは別の問題ですので、スクリプトのコードを見直してください。
権限承認エラーのよくあるパターンと対処法
承認ダイアログが表示されない場合
ブラウザのポップアップブロックが原因で承認ダイアログが表示されないことがあります。その場合は、ポップアップを許可する設定に変更してください。また、スクリプトエディタの上部に「承認が必要です」という黄色いバーが表示されていれば、それをクリックして承認手続きを進めることもできます。
「Authorization is required to perform that action.」というエラーが出る場合
これは、スクリプトが実行される前に承認が完了していないことを示します。手動で承認を促すために、スクリプト内にUrlFetchApp.fetch()などの呼び出しを追加してから再度実行すると、承認ダイアログが表示されます。または、メニューから「実行」→「関数名」を選択しても同様です。
権限が不足しているエラーが出る場合
スクリプトが新しいサービス(例:Gmail API)にアクセスしようとしているのに、そのスコープが許可されていない場合です。コード内で必要なスコープを明示的に宣言するか(例:GmailApp.sendEmail()を使用する場合は自動的にスコープが追加されます)、既存の承認を取り消して再承認する必要があります。承認を取り消すには、Googleアカウントの「アカウントの権限」ページから該当するApps Scriptプロジェクトを削除し、再度実行してください。
アカウントが異なるというエラーが出る場合
複数のGoogleアカウントでログインしている場合、承認ダイアログで選択したアカウントと、スクリプトが現在使用しているアカウントが一致しないとエラーになります。スクリプトエディタの右上に表示されているアカウントが、承認ダイアログで選んだアカウントと同じであることを確認しましょう。異なる場合は、ログインし直すか、ブラウザのシークレットモードで1つのアカウントだけにログインして試します。
ADVERTISEMENT
初回認証時と再認証時の手順の比較
| 項目 | 初回認証時 | 再認証時(権限変更時) |
|---|---|---|
| 承認が必要なタイミング | スクリプトを初めて実行したとき | スクリプトのコードを変更し、新しいスコープが必要になったとき、または承認の期限が切れたとき |
| 承認画面の表示方法 | 関数を実行すると自動でOAuth同意画面が表示される | 同様に関数実行時に自動表示されるが、以前の承認が残っている場合は表示されないこともある。その場合は手動で承認を取り消す必要がある |
| ユーザー操作 | アカウントを選択し、権限を確認して許可する | 同様の操作を行うが、以前の承認が残っている場合は権限の追加のみの画面が表示される |
| 注意点 | ポップアップブロックを解除しておく | 承認を取り消す場合は、Googleアカウントのセキュリティ設定から該当アプリを削除する |
まとめ
この記事では、Apps Scriptの権限承認エラーの原因と、初回認証を成功させる手順を解説しました。正しい手順で承認を行えば、エラーは解消し、スクリプトをスムーズに実行できます。また、よくあるエラーパターンごとの対処法も紹介しました。次に、定期的にスクリプトを実行するためにトリガーを設定する場合も、同様の承認処理が必要になることを覚えておきましょう。本記事の内容を活用して、Apps Scriptの開発をより快適に進めてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
