みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。
Google Apps Scriptで操作するサービスとして、スプレッドシート、Gmail、カレンダー、ドキュメント…と来ましたが、そろそろGoogleドライブも操作できるようになっておきましょう。
どんなツールを作るかと言いますと、メールの添付ファイルをGoogleドライブ内の指定のフォルダに自動保存するというツールです。
- 特定の取引先やシステムから送られてくる定期レポート
- eFAXなどで転送されてきたPDF
など、用途はけっこうあるかなと思います。
今回は第1回目。Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプトとしてGoogleドライブのフォルダとファイルを取得する方法についてお伝えします。
では、行ってみましょう!
スクリプトエディタを起動する
はい、ではまずスクリプトの準備をしていきましょう。
本ツールでは、ゆくゆくはGoogleドライブへの保存履歴をスプレッドシートに記録していきたいと考えているので、スプレッドシートからスクリプトエディタを開いていきたいと思います。
新規のスプレッドシートを作成して、メニューから「ツール」→「スクリプトエディタ」ですね。
スクリプトエディタが開きますので、プロジェクト名を「ドライブにファイル保存」、スクリプトファイル名を「test.gs」、関数名を「testDrive」に変更をしました。
これで準備はOKです。
Googleドライブのフォルダを取得する
今回は、はじめてのGoogleドライブの操作ということで、Googleドライブ内の以下「Googleドライブ操作」という名称のフォルダを操作してみたいと思います。
フォルダの中には、「高橋宣成の著書紹介」というpdfファイルがあります。
まず、このフォルダをGoogle Apps Scriptで取得してみましょう。
getFolderByIdメソッドでGoogleドライブのフォルダを取得
Google Apps ScriptでGoogleドライブのフォルダを取得する場合は、DriveAppのgetFolderByIdメソッドを使います。
これでフォルダをオブジェクトとして取得することができます。
IDをどのように知るかと言いますと、フォルダであればGoogleドライブでそのフォルダを開いている際のURLの以下の部分です。
Googldeドライブを操作するスクリプトの実行
例えば、以下のようなスクリプトを書いてみましょう。
function testDrive() { const folder = DriveApp.getFolderById('XXXXXXXXXXXX'); //フォルダIDを指定 console.log(folder.getName()); }
そして、関数を選択した状態で「実行」アイコン、または Ctrl + R で実行です。
Googleドライブへのリクエストを承認
初回の実行であればGoogleドライブへのリクエストの承認を求められます。
「Authorization required」というダイアログが表示されますので、「許可を確認」から承認作業を進めてください。
以降、いくつかのウィンドウが開きますので、順次確認して許可をしていってください。
詳しくは以下の記事をどうぞ!
この作業が終えると、スクリプトからGoogleドライブの操作の許可をしたということになります。
フォルダオブジェクトのフォルダ名を表示
実行しても何も起きないように思えるかも知れませんが、console.logですからログに何かが表示されているはずです。
スクリプトエディタのメニューの「表示」→「ログ」または Ctrl + Enter でログを確認することができます。
フォルダ名が「Googleドライブ操作」と出力されていますね。
スクリプトで使用されているgetNameメソッドはフォルダ名を取得するメソッドです。
getFileByIdメソッドでGoogleドライブのファイルを取得する
では、もう一つスクリプトを作ってみましょう。
今度は、フォルダ内に保存されていたファイル「高橋宣成の著書紹介.pdf」を取得してみましょう。
Googleドライブのファイルを取得する場合は、DriveAppのgetFileByIdメソッドを使います。
これで、IDで指定したファイルをオブジェクトとしてつかむことができます。
ファイルのIDは、Googleドライブで対象ファイルを右クリック→「共有可能なリンクを取得」にて得られる
または、Googleドライブで対象ファイルのプレビューを開く→右上の「その他の操作」アイコン→「新しいウィンドウで開く」をした際のURL
で得ることができます。
Googleドライブのプレビュー画面で得られるIDはフォルダIDなので気をつけて下さいね。
ファイルオブジェクトのファイル名を表示
それではファイルオブジェクトを取得して、そのファイル名をログ出力するスクリプトを実行してみましょう。
function testDrive() { const file = DriveApp.getFileById('XXXXXXXXXXXX'); //ファイルIDを指定 console.log(file.getName()); }
ファイル名の表示もgetNameメソッドで可能です。
ログ出力の結果を見ると、以下のようにファイル名が表示されていることを確認できました。
まとめ
以上、Google Apps ScriptでGoogleドライブを操作する最も簡単なスクリプトとして
- GoogleドライブのフォルダをIDで取得してそのフォルダ名を表示する
- GoogleドライブのファイルをIDで取得してそのファイル名を表示する
という二つのスクリプトを紹介しました。
Googleドライブ上のフォルダやファイルは何でもIDで取得することができますので、覚えておいてくださいね。
次回はGoogleドライブのフォルダ内にファイルを生成する方法についてお伝えしますね。
どうぞお楽しみに!