Nhận tất cả ID của các tệp
Tôi đang làm việc trên một thư mục cho mỗi cấp lớp có cùng nội dung. Tôi đã sử dụng chức năng IMPORT RANGE để kết nối các bảng tính. Vì vậy, tôi cần cập nhật ID mỗi khi tạo một cấp lớp khác. Tôi có thể hỏi liệu tôi có thể lấy tất cả ID của tất cả các tệp mà tôi đang làm việc mà không cần chỉnh sửa hoặc nhập từng tệp một không? Có thể một kịch bản có thể làm cho nó dễ dàng hơn?
Đây là hình ảnh của danh sách các ID.
Nếu có thể, quy trình tôi đang nghĩ đến là lấy tên tệp của tệp và sau đó lấy id của nó.
Trả lời
Giải trình:
Tập lệnh sau sẽ lấy tất cả các tên tệp trong phạm vi
B3:B. Sau đó foreach tên tập tin chúng tôi sử dụng getFilesByName để có được các tập tin tương ứng với tên đó. Đảm bảo rằng bạn không có các tệp có cùng tên, nếu không quá trình này sẽ trả về nhiều ID cho cùng một tên và do đó logic sẽ không hoạt động.Cuối cùng, chúng tôi sử dụng getId để lấy ID của mỗi tệp và lưu trữ nó vào một mảng. Mảng này sau đó sẽ được dán vào cột C bắt đầu từ ô
C3như bạn chỉ ra trong ảnh chụp màn hình.
Giải pháp:
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);
}