我有一個用于表格的 Google Apps 腳本(作為表格下的腳本運行),它應該回傳我的 Google 驅動器中的所有檔案夾,但是,以下代碼陷入了無限回圈,并且僅顯示驅動器中 3 個檔案夾中的 1 個- 一遍又一遍地。
//this doesn't work -only shows 1 folder and repeats indefinitely
function getMyFolders() {
var f;
while (DriveApp.getFolders().hasNext()) {
f = DriveApp.getFolders().next();
console.log("f: " f.getName());
}
}
該代碼僅回傳我的一個檔案夾的名稱(hasNext() 顯然不起作用或 Google Apps 腳本中存在錯誤 - 因為 while 條件永遠不會為假(我運行了幾分鐘,但它從未停止過!)機智到此結束 - 這可能是一個安全問題嗎?這只是我遇到的問題之一。另一個是 3 個檔案夾是同一個父檔案夾的子檔案夾。不知道為什么 getFolders() 不只回傳父母(那會更有意義)有什么想法嗎?
uj5u.com熱心網友回復:
獲取我的所有檔案
function getAllMyFiles(folder=DriveApp.getRootFolder()) {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet0');
let files = folder.getFiles();
while(files.hasNext()) {
let file = files.next()
sh.appendRow([file.getName(),file.getId()]);
}
let sfldrs = folder.getFolders();
while(sfldrs.hasNext()) {
let sfldr = sfldrs.next();
getAllMyFiles(sfldr)
}
}
uj5u.com熱心網友回復:
我重寫了庫珀的答案,以獲取給定父級下的所有檔案夾。在我的情況下,父檔案夾稱為“Gill”。
function getAllMyFiles(folder=DriveApp.getFoldersByName("Gill").next()) {
let sfldrs = folder.getFolders();
while(sfldrs.hasNext()) {
let sfldr = sfldrs.next();
console.log("folder name: " sfldr.getName());
getAllMyFiles(sfldr)
}
}
uj5u.com熱心網友回復:
試試這個作為你的函式,而不是只回傳父檔案夾!
function getMyFolders() {
let folders = DriveApp.getFolders();
while (folders.hasNext()) {
console.log("f: " folders.next().getName());
}
}
如果您還想要子檔案夾,則需要使用遞回。你熟悉這個概念嗎?如果有幫助,很高興用該資訊更新我的答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/411500.html
標籤:
