見出し画像

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人の少年少女。再会を信じ、力を合わせて生きていくが…!?

この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?