LANG SELRCT

Google Apps Scriptのコードを書く場所  (新規作成: スプレッドシート | スクリプトエディタ

2022年2月6日日曜日

Google Apps ScriptでOAuthのScopeを設定したい


スクリプトに与えるOAuth Scopeの話です。

明示的に変更しなくてもある程度は自動判定してくれますが、手動でさらに絞りたいときにはマニフェストファイル(appsscript.json)で変更できるようです。

公式ドキュメントに記載されている以下について、2022/02/06現在のエディタUIで試してみました。


スプレッドシートのファイル名を「Hello」に変更するコード.gsを例に書いていきます。



コード.gs
function myFunction() {
  var ss = SpreadsheetApp.openById("ファイルID");
  ss.rename("Hello");
}


ファイルIDを指定して実行すると、指定したファイル名が「Hello」になります。



現在のOAuthスコープを見てみる


概要を開きます。


プロジェクトのOAuthスコープが表示されます。

https://www.googleapis.com/auth/spreadsheets
Googleドライブでスプレッドシートを表示、編集、作成、削除できるため、ファイル名を「Hello」に変更できました。



マニフェストファイル(appsscript.json)を表示してみる


「プロジェクトの設定」を開きます。


マニフェストファイルをエディタで表示するをチェックします。



エディタにappsscript.jsonが表示されて、中身を確認できるようになります。



appsscript.jsonでOAuthスコープを設定してみる

以下のようにoauthScopesを追加して、スプレッドシートを表示するだけの権限に変更してみます。

appsscript.json
{
  "timeZone": "America/New_York",
  "dependencies": {
  },
  "exceptionLogging": "STACKDRIVER",
  "runtimeVersion": "V8",
  "oauthScopes": [
    "https://www.googleapis.com/auth/spreadsheets.readonly"
    ]
}


https://www.googleapis.com/auth/spreadsheets.readonly
Googleスプレッドシートを表示するだけで、それ以外の編集・作成・削除はできなくなります。



もう一度プロジェクトのOAuthスコープを見てみる



https://www.googleapis.com/auth/spreadsheets
だったのが
https://www.googleapis.com/auth/spreadsheets.readonly
に変更されて、表示するだけしかできなくなりました。


この状態でコードを実行すると、編集権限がないため、以下のようなエラーが出ます。


Required permissions: https://www.googleapis.com/auth/spreadsheets
と出ているので、OAuthスコープにそれを追加してやるとエラーが解消されます。

最新の投稿

Google SpreadsheetのnotesをDocumentに書き出したい

Google SpreadsheetのnotesをまとめてDocumentに書き出したくて書いたコードです。 実行プロセス getSheetNotes():noteを取得したいシートの範囲を指定して取得します notes.join("\n"):取得したデータ(...