ファイルのすべてのIDを取得します

Nov 20 2020

同じ内容の学年レベルごとのフォルダに取り組んでいます。IMPORTRANGE関数を使用してスプレッドシートを接続しました。そのため、別の成績レベルを作成するたびにIDを更新する必要があります。編集したり入力したりせずに、作業中のすべてのファイルのすべてのIDを取得できるかどうか尋ねてもいいですか?多分それを簡単にすることができるスクリプト?

これがIDのリストの写真です。

可能であれば、私が考えているフローは、ファイルのファイル名を取得してから、そのIDを取得することです。

回答

2 Marios Nov 20 2020 at 17:37

説明:

  • 次のスクリプトは、範囲内のすべてのファイル名を取得しますB3:B。次に、forEachのファイル名が、我々は使用getFilesByNameをその名前に対応するファイルを取得します。同じ名前のファイルがないことを確認してください。そうしないと、このプロセスは同じ名前の複数のIDを返すため、ロジックが機能しません。

  • 最後に、getIdを使用して各ファイルのIDを取得し、それを配列に格納します。この配列はC3、スクリーンショットに示されているように、セルから始めて列Cに貼り付けられます。

解決:

function myFunction() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet1'); // change that to the name of your sheet
  const filenames = sh.getRange('B3:B').getValues().flat().filter(r=>r!='');
  const IDs = [];
  const folderId = "put your folder id here";
  const Folder=DriveApp.getFolderById(folderId);
  filenames.forEach(fn=>{
      let Files = Folder.getFilesByName(fn);
      while(Files.hasNext()){
          let file = Files.next();
          IDs.push([file.getId()]);
      }
  });
  sh.getRange(3,3,IDs.length,1).setValues(IDs);
}