Saya sedang mengerjakan folder per tingkat kelas dengan konten yang sama. Saya menggunakan fungsi IMPORT RANGE untuk menghubungkan spreadsheet. Jadi saya perlu memperbarui ID setiap kali saya membuat tingkat kelas lain. Bolehkah saya bertanya apakah mungkin bagi saya untuk mendapatkan semua ID dari semua file yang sedang saya kerjakan tanpa mengedit atau mengetiknya satu per satu? Mungkin ada script yang bisa mempermudah?

Berikut gambar daftar ID tersebut.

IDs

Jika memungkinkan, alur yang saya pikirkan adalah mendapatkan nama file dari file dan kemudian mendapatkan id-nya.

0
cjvdg 20 November 2020, 09:41

1 menjawab

Jawaban Terbaik

Penjelasan:

  • Skrip berikut akan mendapatkan semua nama file dalam rentang B3:B. Kemudian forEach nama file yang kita gunakan getFilesByName untuk mendapatkan file yang sesuai dengan nama tersebut. Pastikan Anda tidak memiliki file dengan nama yang sama, jika tidak, proses ini akan mengembalikan beberapa ID untuk nama yang sama dan oleh karena itu logika tidak akan berfungsi.

  • Akhirnya kami menggunakan getId untuk mendapatkan ID setiap file dan menyimpannya ke dalam array. Array ini kemudian akan ditempelkan ke kolom C mulai dari sel C3 seperti yang Anda tunjukkan di tangkapan layar.

Larutan:

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);
}
2
Mario 21 November 2020, 00:50