Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script Google电子表格无法检索下一个对象:迭代器已到达末尾_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script Google电子表格无法检索下一个对象:迭代器已到达末尾

Google apps script Google电子表格无法检索下一个对象:迭代器已到达末尾,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,用来列出每个客户的工作时间。我使用脚本制作工作表的pdf,并直接将pdf放在与刚刚创建的pdf相关的客户端文件夹中。它知道从电子表格中获取的客户端名称需要使用哪个文件夹(电子表格中的名称与文件夹名称相同) 一切都非常顺利。。。只要客户端名称是1个单词(例如WeSellApples),只要客户端名称有更多的单词(例如我们不卖苹果),我就会得到错误,无法检索下一个对象:迭代器已到达末尾 因为只有一个词的名字一切都很完美,所以我不知道为什么会发生这种情况 function creat

我有一个电子表格,用来列出每个客户的工作时间。我使用脚本制作工作表的pdf,并直接将pdf放在与刚刚创建的pdf相关的客户端文件夹中。它知道从电子表格中获取的客户端名称需要使用哪个文件夹(电子表格中的名称与文件夹名称相同)

一切都非常顺利。。。只要客户端名称是1个单词(例如WeSellApples),只要客户端名称有更多的单词(例如我们不卖苹果),我就会得到错误,无法检索下一个对象:迭代器已到达末尾

因为只有一个词的名字一切都很完美,所以我不知道为什么会发生这种情况

function createPDF() {
   var sheet1 = SpreadsheetApp.getActiveSpreadsheet();
    var gebruikSheet1 = sheet1.getSheetByName("Urenregistratie maak pdf");
  var ui = SpreadsheetApp.getUi();
  var result = ui.alert( // Asks if I'm sure I want to save
      "Opslaan als PDF?",
      "Sla " +sheet1.getName()+ " " + "week " + gebruikSheet1.getRange("L6").getValue() + 
" " + gebruikSheet1.getRange("C6").getValue() +".pdf op als PDF", 
// Shows the name so I can double check if I selected the right client, 
// client name is in C6 en weeknumber in L6. Both cell values are dynamic (with Vlookup)
      ui.ButtonSet.OK_CANCEL);
  if (result == ui.Button.OK) {
    var hideSheet = sheet1.getSheetByName('Uren bijhouden'); 
// to make sure only the second sheet is exported as pdf
    hideSheet.hideSheet();
    var docblob = SpreadsheetApp.getActiveSpreadsheet().getAs("application/pdf"); 
    docblob.setName(sheet1.getName()+ " " + "week " + gebruikSheet1.getRange("L6").getValue() + 
" " + gebruikSheet1.getRange("C6").getValue() + ".pdf"); 

  var file = DriveApp.createFile(docblob);
    ui.alert(sheet1.getName()+ " " + "week " + gebruikSheet1.getRange("L6").getValue() 
+ " " + gebruikSheet1.getRange("C6").getValue() + " is opgeslagen"); 
  } else {
    ui.alert("Opslaan als .pdf is niet gelukt");
  }

  hideSheet.showSheet(); 


   // file to move
  var klantmap = gebruikSheet1.getRange("C6").getValue(); 
// the client name is in cell C6
  var id = DriveApp.getFoldersByName(klantmap).next().getId(); 
// script can find id of client folder without problem as long as client name 
// is one word
// this is the line where the error occures when client name contains more words
  Logger.log(id);

  DriveApp.getFolderById(id).addFile(file); // add file to client folder

  DriveApp.getRootFolder().removeFile(file); // removes file from root folder

}

我想收到一些提示,看看哪里可以自己解决问题

在这里重新组合后,我注意到:

此行:
var docblob=SpreadsheetApp.getActiveSpreadsheet().getAs(“应用程序/pdf”)


我认为应该是这样的:
var docblob=SpreadsheetApp.getActiveSpreadsheet().getBlob().getAs(“application/pdf”)

重新组合后,我注意到:

此行:
var docblob=SpreadsheetApp.getActiveSpreadsheet().getAs(“应用程序/pdf”)


我认为应该是这样的:
var docblob=SpreadsheetApp.getActiveSpreadsheet().getBlob().getAs(“application/pdf”)

发生了什么。setName是pdf的名称。Klantmap是客户端文件夹名。因此,对于docblob.setName,.pdf文件名为Urenoverzicht week 38 WeSellApples.pdf。。使用var klantmap,脚本将查找文件夹WeSellApples。但是当客户端名称有空格时就不会了。setName所发生的是pdf的名称。Klantmap是客户端文件夹名。因此,对于docblob.setName,.pdf文件名为Urenoverzicht week 38 WeSellApples.pdf。。使用var klantmap,脚本将查找文件夹WeSellApples。但是当客户端名称有空格时就不会了。测试后,我注意到这种行为可能是因为空格而发生的,无论文件夹名称中有多少单词,使用
getFoldersByName()
都可以正常工作。但是,如果文件夹或搜索名称不完全匹配(可能在任一字符串的末尾有额外的空格),我会看到相同的错误,因为它找不到具有该名称的“任何”文件夹。检查您从工作表中检索的字符串是否有多余的空格,另外,使用带有空格的文件夹的硬编码字符串名手动使用
getFoldersByName()
进行检查。谢谢,我将进行一些检查。您好,我只是想检查问题是否得到解决。是的,很抱歉,空格确实存在问题。我现在正在开发一个功能,如果客户端文件夹不存在,它会自动创建一个客户端文件夹,而不是手动创建文件夹,以确保不再出现错误。很高兴听到这个问题得到解决!至于创建文件夹,这样创建文件夹会更好,这样你就知道没有不需要的名称。测试后,我注意到这种行为可能是因为空格,使用
getFoldersByName()
无论文件夹名称中有多少单词,都可以正常工作。但是,如果文件夹或搜索名称不完全匹配(可能在任一字符串的末尾有额外的空格),我会看到相同的错误,因为它找不到具有该名称的“任何”文件夹。检查您从工作表中检索的字符串是否有多余的空格,另外,使用带有空格的文件夹的硬编码字符串名手动使用
getFoldersByName()
进行检查。谢谢,我将进行一些检查。您好,我只是想检查问题是否得到解决。是的,很抱歉,空格确实存在问题。我现在正在开发一个功能,如果客户端文件夹不存在,它会自动创建一个客户端文件夹,而不是手动创建文件夹,以确保不再出现错误。很高兴听到这个问题得到解决!至于创建文件夹,像这样创建文件夹会更好,这样你就知道没有多余的名字了。