LoginSignup
8
7

More than 3 years have passed since last update.

Google APIコンソールを使わずにDrive APIを有効にする

Last updated at Posted at 2017-07-19

概要

これまでGoogle Apps Scriptを使ってDrive APIを使用する場合、手動でGoogle APIコンソールを使ってDrive APIを有効にする必要がありました。最近のアップデート?(具体的な日付は不明です)で個人的には便利と思われる変化が認められましたのでこちらでも情報を共有できればと、記載させていただきます。

その変化は、APIコンソールを使用せずともDrive APIを有効にすることができるようになったことです。

Drive API有効化の手順

有効化させるには若干の手順が必要です。

スクリプトエディタを起動すると、デフォルトで下記のような関数が表示されています。

function myFunction() {

}

この状態でAPIコンソールで有効になっているAPIを見ると、下記のように何もありません。

fig1.png

そこで、次のようなスクリプトを追加します。コメントアウトしたままで問題ありません。この入力後にスクリプトを保存します。

function myFunction() {
  // DriveApp.getRootFolder()
}

すると、下記のようにDrive APIが有効状態になります。(スクリプトを保存しただけで認証プロセスは行っていません。)

fig2.png

プロジェクトのプロパティからスコープを見るとhttps://www.googleapis.com/auth/driveがありました。実際にDriveAPIを使用する場合はスコープの実行を許可するプロセスが必要ですが、これまでのようにAPIコンソールを開いてDrive APIを有効にする必要はなくなりました。

スクリプトを保存しない状態ではAPIは有効になりません。また、DriveAppの単語だけでもAPIは有効になりません。DriveAppを使おうとする内容のスクリプトと、そのスクリプトの保存が有効化のトリガーになっているようでした。他のAPI(全てではありません)も調べてみたところ、今のところ、DriveAPIだけが自動で有効になるようです。

お得なこと?

Drive APIの自動有効化について個人的にお得になりそうと思ったことは次の通りです。

  1. ScriptApp.getOAuthToken()で取得したアクセストークンにはスコープとしてhttps://www.googleapis.com/auth/driveが含まれているため、拡張サービスの"Drive"を使用せずともUrlFetchAppを使ってDriveAPI v2, v3を使用することができる。
  2. スクリプトの配布やスクリプトの説明時に、これまで行っていたAPIコンソールを使ったDriveAPIの有効化手順の記載を省くことができる。
  3. Drive APIの有効化を失念することでエラーが発生することはなくなる。

上記ような状況は一時的なものかどうかは不明です。

更新: 2019年6月29日

  1. 2019年4月8日以降にGoogle Apps Scriptのプロジェクトを新規作成すると、スクリプトエディタ上でAdvanced Google services(Googleの拡張サービス)で使用したいAPIを有効にするだけで実際のAPIも有効化されるようになりました。これも利用できるかと思います。

  2. 以前はDriveApp.getRootFolder()などのメソッドをスクリプトエディタ上に書くとhttps://www.googleapis.com/auth/driveのスコープが自動的に追加されましたが、最近ではこの場合、https://www.googleapis.com/auth/drive.readonlyとなり、メソッドにより必要最小限のスコープの追加が可能になっています。https://www.googleapis.com/auth/driveを追加したい場合は、例えばDriveApp.createFile(blob)などを記入すると自動的に追加されます。

8
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7