第9回:GASでドライブ内のファイルを全て取得する方法

GAS(Google Apps Script)

今回(第9回)はgoogleドライブ内のフォルダ内のすべてのスプレッドシート情報を取得する方法です。
取得した情報は二次元配列(filesInDriveArray変数)に入れておく。

第10回はfilesInDriveArray変数内のデータをキーにしてスプレッドシートを全て開く(アクティブにする)、ファイル内のセル情報を取得する方法

第11回はファイル内の情報をレシピ一覧に出力する方法

今回のシリーズでは妄想でラーメン屋のレシピを作って行こうと思っています。スプレッドシートの関数やgas(Google Apps Script)の勉強メモとして書いて行こうと思います。

やりたいこと

レシピ一覧があったら便利かなと思ってこの表にデータを入れることを目標にしていきたいと思います。

流れ

Googleドライブの指定フォルダ(らーめん妄想屋レシピフォルダ)内から情報を取得する

[マイドライブフォルダ>レシピ管理フォルダ>らぁめん妄想家フォルダ]に5個のスプレッドシートが入っているのでIdを取得して二次元配列に入れる

らぁめん妄想屋レシピ[01ラーメン]

らぁめん妄想屋レシピ[02おつまみ]

らぁめん妄想屋レシピ[03ご飯もの]

らぁめん妄想屋レシピ[20ドリンク]

らぁめん妄想屋レシピ[99半製品]

Idをキーにしてスプレッドシートを全て開く

for分で5個のスプレッドシートを開いていく

スプレッドシート内のシート情報を取得する

開いたスプレッドシートから全てのシートをアクティブにしてA1セルやC2セル内のデータを取得

二次元配列に入れる

シート内の情報を出力する

二次元配列をレシピ一覧に出力する。

Googleドライブの指定フォルダ(らーめん妄想屋レシピフォルダ)内から情報を取得する

function(関数名)はレシピリスト作成(recipeListCreation())という名前にしました。

  function recipeListCreation() {

    /*--------------------------------------------------------------------------*/
    // Googleドライブの指定フォルダ(らーめん妄想屋レシピフォルダ)内から情報を取得する
    /*--------------------------------------------------------------------------*/
    // GoogleドライブのフォルダId(マイドライブ→レシピ管理→らーめん妄想屋レシピ)
    const folderId = 'XXXXXXXXXXXXXXXXXXXXXXXXXX←ここは変えてね';

    // Googleドライブ内のフォルダ情報を保持しておく配列
    const filesInDriveArray = [];
  
    // Googleドライブのフォルダ内のすべてのファイル情報を取得
    const files = DriveApp.getFolderById(folderId).getFiles();
  
    // ドライブ内のファイル配列(filesInDriveArray)にデータを入れる
    while(files.hasNext()) {
      var file = files.next();
      filesInDriveArray.push([file.getName(),file.getId(),file.getUrl()]);
    }
 }

フォルダ情報が取得出来ているかテストしてみる

以下を追加してみてみよう

console.log(filesInDriveArray);
/*--------------------------------------------------------------------------*/
  // ①Googleドライブの指定フォルダ(らーめん妄想屋レシピフォルダ)内から情報を取得する
  /*--------------------------------------------------------------------------*/
  // GoogleドライブのフォルダId(マイドライブ→レシピ管理→らーめん妄想屋レシピ)
  const folderId = 'XXXXXXXXXXXXXXXXXXXXXXXXXX←ここは変えてね';

  // Googleドライブ内のフォルダ情報を保持しておく配列
  const filesInDriveArray = [];
  
  // Googleドライブのフォルダ内のすべてのファイル情報を取得
  const files = DriveApp.getFolderById(folderId).getFiles();
  
  // ドライブ内のファイル配列(filesInDriveArray)にデータを入れる
  while(files.hasNext()) {
    var file = files.next();
    filesInDriveArray.push([file.getName(),file.getId(),file.getUrl()]);
  }
  
  console.log(filesInDriveArray);

実行結果

[]を付けることで二次元配列になっていることが解った。

filesInDriveArray.push([file.getName(),file.getId(),file.getUrl()]);

filesInDriveArrayは以下のイメージで保持。XXXXXはそれぞれ違う文字列になる

ABC
1らぁめん妄想屋レシピ[02おつまみ]XXXXXhttps://docs.google.com/spreadsheets/d/XXXXX/edit?usp=drivesdk
2らぁめん妄想屋レシピ[99半製品]XXXXXhttps://docs.google.com/spreadsheets/d/XXXXX/edit?usp=drivesdk
3らぁめん妄想屋レシピ[20ドリンク]XXXXXhttps://docs.google.com/spreadsheets/d/XXXXX/edit?usp=drivesdk
4以下略

次回

今回取得したフォルダ内データ(filesInDriveArray)をキーにしてスプレッドシート内(レシピ)の情報を取得する

コメント