我在一列中有两张具有唯一ID的工作表。我需要确保每当在一个工作表(Sheet1)中添加新的ID时,它将被复制到另一工作表(Sheet2)中的最后一个空行。 IMPORTRANGE不能以动态方式工作,其他表格中添加的任何静态信息与各自的ID均无关。
在另一个线程[1]中,我得到了开发此脚本的帮助。但是,此脚本会将数据插入到A列的另一张工作表中。如何修改脚本,以便可以确定要脚本插入数据的具体范围(在工作表2中)。
更新:我以创建此电子表格为例。我试图确保脚本执行计算(即,添加在第一个可用空行中未重复的vlaues),从“ Sheet2”中的cel C10开始。如果我需要以某种方式可以更改该范围,那也将非常好:https://docs.google.com/spreadsheets/d/1abESAXFrOHoqRQRNqQGfmAFxlbD10wlprAf1tca4y7o/edit#gid=132361488
谢谢!
function updateSheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = "Sheet1";
var destinationSheet = "Sheet2";
var source_sheet = ss.getSheetByName(sourceSheet);
var target_sheet = ss.getSheetByName(destinationSheet);
var lastCol = target_sheet.getLastColumn();
var lastRow = target_sheet.getLastRow();
if (lastRow > 1) { // <--- Added
var r = target_sheet.getRange(2,1, lastRow - 1, lastCol);
r.sort([{column: 1, ascending: true}]);
}
_updateSpreadsheet(source_sheet, target_sheet);
}
function _updateSpreadsheet(source_sheet, target_sheet) {
var last_row = target_sheet.getLastRow();
var source_data = source_sheet.getRange("A4:A" + source_sheet.getLastRow()).getValues(); // <--- Modified
var target_data = target_sheet.getDataRange().getValues();
var resultArray = [];
for (var n = 0 ; n < source_data.length ; n++) { // <--- Modified
var keep = true;
for(var p in target_data) {
if (source_data[n][0] == target_data[p][0]) {
keep = false; break;
}
}
var columnsToKeep = [0];
var tempData = [];
if(keep){
for(var c in columnsToKeep){ tempData.push(source_data[n][columnsToKeep[c]])}
resultArray.push(tempData);
}
}
last_row++;
resultArray = resultArray.filter(String); // <--- Added
if(resultArray.length>0){
target_sheet.getRange(last_row,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}
}
[1] Google Script: Append new values in column to another sheet
答案 0 :(得分:0)
target_sheet.getRange(last_row,1,resultArray.length,resultArray[0].length)
.setValues(resultArray);
此行
target_sheet
中的工作表访问代码中使用的范围的语法为getRange(row, column, numRows, numColumns)
其中起始列是数字-在您的情况下,它是1
,它对应于列A
。
如果要将起始列从A
修改为B
:
只需更改您的范围定义
getRange(last_row,1,resultArray.length,resultArray[0].length)
到
getRange(last_row,2,resultArray.length,resultArray[0].length)