Google apps script Google电子表格无法检索下一个对象:迭代器已到达末尾
我有一个电子表格,用来列出每个客户的工作时间。我使用脚本制作工作表的pdf,并直接将pdf放在与刚刚创建的pdf相关的客户端文件夹中。它知道从电子表格中获取的客户端名称需要使用哪个文件夹(电子表格中的名称与文件夹名称相同) 一切都非常顺利。。。只要客户端名称是1个单词(例如WeSellApples),只要客户端名称有更多的单词(例如我们不卖苹果),我就会得到错误,无法检索下一个对象:迭代器已到达末尾 因为只有一个词的名字一切都很完美,所以我不知道为什么会发生这种情况Google apps script Google电子表格无法检索下一个对象:迭代器已到达末尾,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个电子表格,用来列出每个客户的工作时间。我使用脚本制作工作表的pdf,并直接将pdf放在与刚刚创建的pdf相关的客户端文件夹中。它知道从电子表格中获取的客户端名称需要使用哪个文件夹(电子表格中的名称与文件夹名称相同) 一切都非常顺利。。。只要客户端名称是1个单词(例如WeSellApples),只要客户端名称有更多的单词(例如我们不卖苹果),我就会得到错误,无法检索下一个对象:迭代器已到达末尾 因为只有一个词的名字一切都很完美,所以我不知道为什么会发生这种情况 function creat
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()
进行检查。谢谢,我将进行一些检查。您好,我只是想检查问题是否得到解决。是的,很抱歉,空格确实存在问题。我现在正在开发一个功能,如果客户端文件夹不存在,它会自动创建一个客户端文件夹,而不是手动创建文件夹,以确保不再出现错误。很高兴听到这个问题得到解决!至于创建文件夹,像这样创建文件夹会更好,这样你就知道没有多余的名字了。