将多行从电子表格复制到另一个电子表格



我正在编写一个脚本,将选定的行从电子表格复制到另一个电子表格,从a列复制到D列。
它运行良好
问题是3:

  1. 如何用列C和E将列从A更改为D
  2. 脚本只适用于选定的一行,如何同时复制选定的多行
  3. 当脚本终止时,我希望在H列中显示所复制行的值Sent

提前感谢。

function main() {
transfer("....", "Foglio1", "Foglio1");
}
function transfer(targetId, sourceSheetName, targetSheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName(sourceSheetName);
var last = sourceSheet.getActiveRange().getRow();
var data = sourceSheet.getRange(last, 1, 1, 4).getValues();
// copy data
var ss2 = SpreadsheetApp.openById(targetId);
var targetSheet = ss2.getSheetByName(targetSheetName);
//get last row
var lastRow = targetSheet.getLastRow();
//write data
targetSheet.getRange(lastRow + 1, 1, data.length, data[0].length)
.setValues(data);
}

说明:

  1. 如何用列C和E将列从A更改为D

请查看getRange:的参数

更换

var data = sourceSheet.getRange(last, 1, 1, 4).getValues();

带有

var data = sourceSheet.getRange(last, 3, 1, 3).getValues();


  1. 脚本只适用于选定的一行,如何同时复制选定的多行

您可以使用getHeight查找所选的行数,并将其传递给getRange:

var height = sourceSheet.getActiveRange().getHeight();  
var data = sourceSheet.getRange(last, 3, height, 3).getValues();

  1. 当脚本终止时,在H列中显示值";发送";对于复制的行

您可以将所选行的列H的值设置为Sent

sourceSheet.getRange(last, 8, height).setValue('Sent');


解决方案:

function main() {
transfer("....", "Foglio1", "Foglio1");
}
function transfer(targetId, sourceSheetName, targetSheetName) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sourceSheet = ss.getSheetByName(sourceSheetName);
var last = sourceSheet.getActiveRange().getRow();
var height = sourceSheet.getActiveRange().getHeight();  
var data = sourceSheet.getRange(last, 3, height, 3).getValues();
// copy data
var ss2 = SpreadsheetApp.openById(targetId);
var targetSheet = ss2.getSheetByName(targetSheetName);
//get last row
var lastRow = targetSheet.getLastRow();
//write data
targetSheet.getRange(lastRow + 1, 3, data.length, data[0].length)
.setValues(data);

sourceSheet.getRange(last, 8, height).setValue('Sent');
}

相关内容

最新更新