我正在使用我的脚本删除我的Google表格文件的POHistory标签中的任何行,这些行在第一个单元格中的值与我在POTemplate选项卡的单元格E9中找到的值相比较。但是,在执行命令时我没有看到任何响应。不知道这里缺少什么。基本上,我收到一条错误消息,指出我要删除的行是"超出界限"。谢谢你的期待。
function deleteOld() {
var app = SpreadsheetApp;
var orderSheet = app.getActiveSpreadsheet().getSheetByName("POTemplate");
var historySheet = app.getActiveSpreadsheet().getSheetByName("POHistory");
var poNO = orderSheet.getRange("E9").getValue();
var lastRow = historySheet.getLastRow();
var myRange = historySheet.getRange("A2:A" + lastRow);
var data = myRange.getValues();
for(i = 0; i < data.length; i++){
if(data[i][0] != poNO){
continue;
}else{
historySheet.deleteRow(i);
}}}
答案 0 :(得分:1)
因为您要删除一行,所以i
值不再对应于相同的范围。例如,您有一个包含5个元素的数组:
[A, B, C, D, E]
如果您删除元素0
,则会获得
[B, C, D, E]
现在你增加你的迭代器i++; // i = 1
,所以你要操作的下一个值不是“B”,而是“C”。
你可以试试
function test() {
var letters = ["A", "B", "C", "D", "E"];
for (var i=0; i<letters.length; i++) {
Logger.log("i : " + i + " || Letter: " + letters[i]);
letters.shift();
}
}
要修复代码,请添加一个独立于数组迭代器row
的{{1}}变量。
尝试将其作为模板:
i