概要
これまでGoogle Apps Scriptを使ってDrive APIを使用する場合、手動でGoogle APIコンソールを使ってDrive APIを有効にする必要がありました。最近のアップデート?(具体的な日付は不明です)で個人的には便利と思われる変化が認められましたのでこちらでも情報を共有できればと、記載させていただきます。
その変化は、APIコンソールを使用せずともDrive APIを有効にすることができるようになったことです。
Drive API有効化の手順
有効化させるには若干の手順が必要です。
スクリプトエディタを起動すると、デフォルトで下記のような関数が表示されています。
function myFunction() {
}
この状態でAPIコンソールで有効になっているAPIを見ると、下記のように何もありません。
そこで、次のようなスクリプトを追加します。コメントアウトしたままで問題ありません。この入力後にスクリプトを保存します。
function myFunction() {
// DriveApp.getRootFolder()
}
すると、下記のようにDrive APIが有効状態になります。(スクリプトを保存しただけで認証プロセスは行っていません。)
プロジェクトのプロパティからスコープを見るとhttps://www.googleapis.com/auth/drive
がありました。実際にDriveAPIを使用する場合はスコープの実行を許可するプロセスが必要ですが、これまでのようにAPIコンソールを開いてDrive APIを有効にする必要はなくなりました。
スクリプトを保存しない状態ではAPIは有効になりません。また、DriveApp
の単語だけでもAPIは有効になりません。DriveAppを使おうとする内容のスクリプトと、そのスクリプトの保存が有効化のトリガーになっているようでした。他のAPI(全てではありません)も調べてみたところ、今のところ、DriveAPIだけが自動で有効になるようです。
お得なこと?
Drive APIの自動有効化について個人的にお得になりそうと思ったことは次の通りです。
-
ScriptApp.getOAuthToken()
で取得したアクセストークンにはスコープとしてhttps://www.googleapis.com/auth/drive
が含まれているため、拡張サービスの"Drive"を使用せずともUrlFetchApp
を使ってDriveAPI v2, v3を使用することができる。 - スクリプトの配布やスクリプトの説明時に、これまで行っていたAPIコンソールを使ったDriveAPIの有効化手順の記載を省くことができる。
- Drive APIの有効化を失念することでエラーが発生することはなくなる。
上記ような状況は一時的なものかどうかは不明です。
更新: 2019年6月29日
-
2019年4月8日以降にGoogle Apps Scriptのプロジェクトを新規作成すると、スクリプトエディタ上でAdvanced Google services(Googleの拡張サービス)で使用したいAPIを有効にするだけで実際のAPIも有効化されるようになりました。これも利用できるかと思います。
-
以前は
DriveApp.getRootFolder()
などのメソッドをスクリプトエディタ上に書くとhttps://www.googleapis.com/auth/drive
のスコープが自動的に追加されましたが、最近ではこの場合、https://www.googleapis.com/auth/drive.readonly
となり、メソッドにより必要最小限のスコープの追加が可能になっています。https://www.googleapis.com/auth/drive
を追加したい場合は、例えばDriveApp.createFile(blob)
などを記入すると自動的に追加されます。