我有这个脚本运行良好,但我需要编辑它 a)自上次运行以来仅返回新行 b)仅返回某些单元格而不是整行
任何指导都将不胜感激
add_foreign_key "entrees", "snapshots"
}
答案 0 :(得分:2)
为了仅检查在上次运行时之后添加的新数据,我们必须在属性中存储.getLastRow()
值并在每个运行时检索它。我们还必须在一些假设下工作:
所以你需要的东西是
var sourceSheet = SpreadsheetApp.openById('1WAtRDYhfVXcBKQoUxfTJORXwAqYvVG2Khl4GuJEYSIs')
.getSheetByName('Jobs Log');
var lastRow = sourceSheet.getLastRow();
// note that you need to hav the script property initialized and stored
// or adjust the if to also check if prevLastRow gets a value
var prevLastRow = PropertiesService.getScriptProperties().getProperty('lastRow')
if (lastRow <= prevLastRow) {
return; // we simply stop the execution right here if we don't have more data
}
// then we simply start the range from the previous last row
// and take the amount of rows added afterwards
var range = sourceSheet.getRange(prevLastRow,
1,
lastRow - prevLastRow,
sourceSheet.getLastColumn()
);
关于第二个问题,在forEach
内部,您只需将数组推入arr
,其中只包含您想要的列。例如,
if (r[1] == 'Amber') arr.push(v[i]);
变为
if (r[1] == 'Amber') arr.push([v[i][0], v[i][3], v[i][2]]);
将为每行输出A D C
列(按此顺序)。
最后,在脚本结束之前需要运行的最后一件事是
PropertiesService.getScriptProperties().setProperty('lastRow', lastRow)
它会让我们知道下次运行脚本时我们停在哪里。同样,请记住,仅当新数据始终位于新行中时,此方法才有效。否则,您需要执行不同的方法并检索2个数据数组。 1表示整个输入表,1表示输出表。然后你必须执行2 if
次检查。第一个是查看你的标准是否满足,第二个是看它是否已经存在于输出数据中。