Apps Scriptリファレンス: Apps Script Reference |障害・課題追跡: IssueTracker |Google Workspace: Status Dashboard - Summary

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スコープにそれを追加してやるとエラーが解消されます。

Latest post

Googleドキュメントに見出しを追加したい

今回の例では、ドキュメントの末尾に「見出しD」 を追加します。 見出しA, B, C, Dのスタイルは、見出し3 ( HEADING3 ) に設定しています。  下記Code.gsの  GOOGLE_DOCUMENT_URL を設定して  addHeadingToEnd()  を...