GoogleAppsScript
googleapi

GASライブラリによるマニフェストの活用について

Manifest(マニフェスト)が公開されたことで、GAS開発に対して様々な活用方法が考えられます。一部はこちらで紹介させていただきました。この記事では、GASライブラリによるマニフェストの活用について紹介させていただきます。

次のデモをご覧ください。これが本記事のメインです。

20171123-demo.gif

このデモンストレーションでは、新規作成したプロジェクトに対して、マニフェストで"oauthScopes"を設定しただけのライブラリ(ライブラリのスクリプトID 1TYEitZm7SsAGPDI1PMfeZhIDqRrpLF8a5H9AlhGddCjJMOyHS4EBRH1c )をインストールすることでデフォルトスコープが設定されることを示しています。ライブラリをインストールしたプロジェクトのマニフェストには"oauthScopes"は設定されていないことも確認できます。

"oauthScopes"で設定したサンプルとしてのスコープは次の8個です。

"oauthScopes": [
  "https://www.googleapis.com/auth/analytics.readonly",
  "https://www.googleapis.com/auth/blogger.readonly",
  "https://www.googleapis.com/auth/calendar.readonly",
  "https://www.googleapis.com/auth/drive.readonly",
  "https://www.googleapis.com/auth/gmail.readonly",
  "https://www.googleapis.com/auth/presentations.readonly",
  "https://www.googleapis.com/auth/spreadsheets.readonly",
  "https://www.googleapis.com/auth/youtube.readonly"
]

解説

ライブラリであるプロジェクトのマニフェストへ"oauthScopes"でスコープを設定すると、そのスコープは、ライブラリをインストールしたプロジェクトのデフォルトスコープとして引き継がれます。この意味するところは次の通りです。

  • マニフェストへの"oauthScopes"設定では、プロジェクトのマニフェストへスコープを登録すると、登録したスコープのみが使用可能になり、スクリプトの内容から自動判定された別のスコープが使用できなくなる問題があります。マニフェストへのスコープの登録は、スコープの制限を設けることと等価です。
    • マニフェストを使用しない場合は、スクリプト実行時に必要なスコープ(全てではない)が自動認識されて認証画面が表示されます。これは、マニフェストが追加されるまでのこれまでの状況です。

ライブラリを用いることで上記が解消されます。すなわち、マニフェストでスコープを設定したライブラリをインストールしたプロジェクトは、プロジェクト内でマニフェストの設定をせずともライブラリのスコープを使用することができるようになります。これにより、スクリプトを作成中にさらに追加のスコープが必要になった場合でもそれらのスコープは自動認識され、認証画面で認証することにより使用できるようになります。

用途

これが活用できそうだと思った状況は、特殊スコープを使用したライブラリの公開ではないでしょうか。これまで用意していたOAuth2プロセスの説明が不要になることは、作り手の手間解消だけでなく、使い手のハードルも下がると思われます。

また、新規プロジェクトのテンプレートとしても活用できるのではないかと思われます。いつも使用するような拡張サービスやライブラリ、スコープなどをマニフェストへ設定したライブラリを用意しておき、これを新規プロジェクト作成時にインストールすることで開発環境が整うための時間短縮につながるのではないかと思われます。

謝辞

Martin Hawksey

この情報がお役に立ちましたら幸いです。