亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

For 循環 getFileById() 拋出錯誤:“找不到具有給定 ID 的項目......”

For 循環 getFileById() 拋出錯誤:“找不到具有給定 ID 的項目......”

慕容708150 2021-11-18 09:32:31
首先,我對編程非常陌生,我只是在不斷地想辦法解決問題。我正在嘗試編寫一個應用程序腳本,該腳本將按 ID(ID 存儲在 Google 表格文件中)將特定文件復制到提交表單時創建的這個新文件夾中。但是我的 for 循環拋出錯誤并說:“找不到具有給定 ID 的項目,或者您無權訪問它。(第 30 行,文件“應用腳本””即使當我單獨運行每個文件(byID)的代碼時,它也能工作。有人可以告訴我我做錯了什么。(以下代碼中的ID不是實際ID)function SheetAutomation(){    function getSheetById(id) {      return SpreadsheetApp.getActive().getSheets().filter(      function(s) {return s.getSheetId() === id;}      )[0];    }  var sheet_form_res = getSheetById(1692343941);  var lr = sheet_form_res.getLastRow();  var casenumber = sheet_form_res.getRange(lr,1).getValue();  Logger.log(casenumber);  var folder = DriveApp.getFolderById("1tr2A3e3edwelB8dgkN8tgdPYv8T8V6");  var newFolder = folder.createFolder(casenumber);  var newFolderID = newFolder.getId();  Logger.log('newFolderID: ' + newFolderID);  var casefolderid = sheet_form_res.getRange(lr, 7).setValue(newFolderID);  Logger.log('Casefolder id: ' + casefolderid.getValues());  var sheet_dsd_image_id = getSheetById(1233563458640);  var num_dsd_images = sheet_dsd_image_id.getRange(lr,1).getValue();  Logger.log('num_dsd_images: ' + num_dsd_images);  for (var i=0; i<=num_dsd_images; i++){    var image_id = sheet_dsd_image_id.getRange(lr,i+1).getValue();    Logger.log(image_id);    // The line of code that doesn't work    var image_file = DriveApp.getFileById(image_id);    Logger.log(image_file);  }};我用以下內容替換了 for 循環,看看我是否真的無權訪問這些文件,但這似乎有效,我只是無法通過循環使其工作  var image_id_1 = sheet_dsd_image_id.getRange(lr,2).getValue();  var image_file_1 = DriveApp.getFileById(image_id_1);  Logger.log(image_file_1);  image_file_1.makeCopy(newFolder);  var image_id_2 = sheet_dsd_image_id.getRange(lr,3).getValue();  var image_file_2 = DriveApp.getFileById(image_id_2);  Logger.log(image_file_2);  image_file_2.makeCopy(newFolder);  var image_id_3 = sheet_dsd_image_id.getRange(lr,4).getValue();  var image_file_3 = DriveApp.getFileById(image_id_3);  Logger.log(image_file_3);  image_file_3.makeCopy(newFolder);項目觸發器如下: Project Trigger 窗口截圖
查看完整描述

1 回答

?
千巷貓影

TA貢獻1829條經驗 獲得超7個贊

對我來說,這似乎是一個錯誤。您確定您的 for 循環在您期望的范圍內嗎?你定義你的范圍<=:


for (var i=0; i<=num_dsd_images; i++)


這意味著如果num_dsd_images是 3,i則使用以下值:1、2、3、4。這是正確的嗎?根據您的變量名稱,我希望只有 3 個圖像而不是 4 個。


如果您使用<and not <=,則 for 的值i將是:1, 2, 3。通過此更改,您的循環將需要:


for (var i=0; i < num_dsd_images; i++){

    var image_id = sheet_dsd_image_id.getRange(lr,i+1).getValue();

    Logger.log(image_id);

    // The line of code that doesn't work

    var image_file = DriveApp.getFileById(image_id);

    Logger.log(image_file);

 }

或者,您可以對您的范圍進行 1-index 并<=像這樣使用: for (var i = 1; i <= num_dsd_images; i++)


查看完整回答
反對 回復 2021-11-18
  • 1 回答
  • 0 關注
  • 192 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號