我正在尝试编写一个脚本,根据ID将数据放在特定行中。 我已经有了:
function copy(){
var tabelle1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var tabelle2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2 ");
tabelle2.getRange(3,7).copyTo(tabelle1.getRange(tabelle1.getLastRow()+1,1));
tabelle2.getRange(13,4).copyTo(tabelle1.getRange(tabelle1.getLastRow()+0,2));
}
现在我的问题是在用脚本复制行之前,如何删除所有具有相同ID(1)的行。 (见图片) 或者,如果我的列表中每个ID仅包含一次,该如何覆盖该值?
答案 0 :(得分:0)
下面应该这样做。您的代码在工作表引用中不正确。我使用setValue而不是copyTo,因为您需要选择要传递给readRows函数的值,它看起来更干净。
function copy(){
var tabelle1=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
var tabelle2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var sel=tabelle1.getRange(3,7).getValue()
readRows(sel)
tabelle2.getRange(tabelle2.getLastRow()+1,1).setValue(sel);
var tm=tabelle1.getRange(13,4).getValue()
tabelle2.getRange(tabelle2.getLastRow()+0,2).setValue(tm);
}
function readRows(sel) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2");
var lr=sheet.getLastRow()
var values = sheet.getRange(1,1,lr,2).getValues();
var rowsDeleted = 0;
for (var i = 0; i <= values.length-1; i++) {
var row = values[i][0];
if (row == sel) {
sheet.deleteRow((parseInt(i)+1) - rowsDeleted);
rowsDeleted++;
}
}
};