こんにちは、マネージャーのJackです。
弊社ではG Suiteを利用しており、GoogleスライドやGoogleスプレッドシートなど日常業務でめちゃくちゃ使っています。そして、これらのツールで作成されたドキュメントを、Google Apps Script(以下、GAS)を利用して効率化を図っていたりもします。たとえば、議事録の複製や情報(スプレッドシートのセルの値など)が更新された際の通知など、多岐にわたり活用しています。
今日は、私がよく利用するGASのメソッドを備忘録として残しておきたいと思います。
指定したファイル名に一致する全ファイルを取得する
前提条件
任意のディレクトリのファイル操作を前提とします。
フォルダIDをスクリプトのプロパティとして登録します。フォルダIDとは、下記URLの{FOLDER_ID}の値となります。
https://docs.google.com/spreadsheets/d/{FOLDER_ID}
- プロパティ名:FOLDER_ID
- 値:{FOLDER_ID}
事前準備
任意のフォルダに格納されたファイルを操作するための事前準備です。
var folderId = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
var folder = DriveApp.getFolderById(folderId);
ソースコード
本題です。指定したファイル名に一致する全ファイルを取得するには、下記のような記述となります。
getFilesByNameというメソッドを利用すればOKです。
var fileName = "xxxxx"; // ファイル名を指定
var files = folder.getFilesByName(fileName);
while (files.hasNext()) {
var file = files.next();
var currentFileID = file.getId();
var currentFileName = file.getName();
}
指定したファイルIDに一致するファイルを取得する
続いて、指定したファイルIDに一致するファイルを取得してみましょう。
DriveApp.getFileByIdを利用すればOKです。
前回と同様に、DriveAppクラスを利用します。DriveAppクラスは、Googleドライブ上にファイルやフォルダを作成したり、更新、検索できるようにするためのクラスとなります。
var fileId = "xxxxx"; // ファイルIDを指定
var last = DriveApp.getFileById(fileId);
詳細は、下記リンク先が参考になります。
https://developers.google.com/apps-script/reference/drive/drive-app
指定したフォルダIDに一致するフォルダを取得する
次に、指定したフォルダIDに一致するフォルダを取得するgetFolderByIdメソッドを試してみます。
私は、ファイルの存在チェックをするときなどにこのメソッド利用しています。
今回は、isExistFileという独自メソッドを作ってみました。このisExistFile関数ですが、引数にファイル名を指定することで、FOLDER_IDにフォルダ内に指定したファイルが存在するかどうかをチェックするスクリプトになります。
function isExistFile(filename) {
var folderId = PropertiesService.getScriptProperties().getProperty('FOLDER_ID');
var folder = DriveApp.getFolderById(folderId);
var files = folder.getFilesByName(filename);
var fp = '';
var fileId = '';
while (files.hasNext()) {
fp = files.next();
file_id = fp.getId();
if (fileId.toString() !== "") {
return true;
}
}
return false;
}
おわりに
本日は、私がよく利用するGoogle Apps Scriptのメソッドを紹介させていただきました。
(次回は、もっと実践的な記事を!! 書きたいと思います!!)
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。