【发布时间】:2021-02-14 11:24:45
【问题描述】:
我正在编写一个简单的代码来遍历一个范围内的所有链接,从这些电子表格(链接)中收集信息并粘贴到循环的当前行中。
function UpdateProjects()
{
//----------EDIT THIS FOR A DIFFERENT CLIENT-------------
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Projects");
var etilastrow = sheet.getLastRow();
var urlRange = sheet.getRange(2, 1, etilastrow);
var urlsvalues = urlRange.getValues();
var urls = urlRange.getFormulas();
Logger.log(urls)
//looping through all of the rows
for (var i = 0; i < etilastrow; ++i) {
currentRow = 2 + i;
var dirturl = urls[i];
var remove_before = dirturl[i].indexOf('",');
var url = dirturl[i].substring(12, remove_before);
Logger.log(currentRow);
Logger.log(url);
//-----------------Loop code below until last project-------
var projectPCBdesignsheet = SpreadsheetApp.openByUrl(url).getSheetByName("Main");
var lstrow = projectPCBdesignsheet.getLastRow();
const vA=projectPCBdesignsheet.getRange(7,2,lstrow).getValues();//get data from project's PCB Design sheet
//add last edit values
sheet.getRange(currentRow, 4).setValue(vA[10]);
sheet.getRange(currentRow, 5).setValue(vA[11]);
//additional data from PCB design sheet
sheet.getRange(currentRow, 6).setValue(vA[0]);
sheet.getRange(currentRow, 7).setValue(vA[1]);
sheet.getRange(currentRow, 8).setValue(vA[2]);
sheet.getRange(currentRow, 9).setValue(vA[3]);
sheet.getRange(currentRow, 11).setValue(vA[5]);
}
}
如果我将 url 硬编码到变量中,脚本就可以工作。现在,从日志中,我可以看到行号和干净的 url。
问题是脚本因以下错误而停止: “类型错误:无法读取未定义的属性‘indexOf’ ETI更新项目 @UpdateProjects.gs:18"
我不明白它如何在第 18 行找到错误,如果它向我显示 currentRow 和 url 的日志,它们位于“indexOf”行之后。
【问题讨论】:
-
etilastrow不应该这样使用,因为你开始从第 2 行而不是第 1 行获取行,你能从中减去它是否有帮助?
标签: javascript google-apps-script google-sheets indexof