GAS|ファイル名からスプレッドシートを検索する|DriveApp|Google Apps Script|開発裏話
「マンガポスト日本版」では、Google ドライブ内に保存している「コミックス発売日情報」を参照して、その日付を基に毎日配信しています。
この「コミックス販売日情報」は、スプレッドシートで作ったものです。
Google ドライブ内に保存しているスプレッドシートを、「ファイル名」を指定して取得するには、以下のようにしました。
Google ドライブは同名ファイルの存在を許容しますが、上記では重複するファイルの判定(及び存在確認)は省いています。
ですので今回は、ファイルの判定(及び存在確認)を以下のように行います。存在しなければ「null」を返却します。
/**
* Gets the spreadsheet that match the given name.
*
* @param id — the ID of the folder
* @param name — the name of the files to find
* @return Spreadsheet — the Spreadsheet object
*/
function findSpreadsheetByName(id, name) {
// get the folder with the given id
var folder = DriveApp.getFolderById(id);
// get a collection of all files
var files = folder.getFilesByName(name);
// find spreadsheet
while (files.hasNext()) {
// get file
var file = files.next();
// is spreadsheet?
if ('application/vnd.google-apps.spreadsheet' == file.getMimeType()) {
// open spreadsheet
return SpreadsheetApp.openById(file.getId());
}
}
return null;
}
同一の「MIME Type」で同名ファイルが存在するというのは、本来やるべきことではありません。ですので、最初に検出したスプレッドシートを取得するようにしています。
「MIME Type」を変更することで、スプレッドシート以外にも色々なファイルを検索することができます。
サポートされている「MIME Type」は以下で確認できます。
ところで、ファイルを検索したいなら、「DriveApp.searchFiles」というメソッドが GAS には存在しますが、現在、こちらが正常に機能していません。取得した「FileIterator」の「FileIterator.hasNext()」を呼び出すと、必ず「引数が無効」というエラーが発生します。
マンガポスト日本版
マンガポスト日本版の Twitter 公式アカウントです。
漫画(まんが)・コミックの新刊情報を毎日配信中!
コーヒーブレイク
謎の現象“ファントム”により、人類が消えた世界に残された4人の少年少女。再会を信じ、力を合わせて生きていくが…!?