Google Apps脚本-如何将列复制到下一个可用列的另一个工作表

Son*_*tto 1 google-sheets google-apps-script

我有一个要求,我需要从一个或多个列中获取值,然后将其复制到下一个可用列中的另一张表中。我写了这样的脚本。它确实从一列中复制值,但是无法继续前进以将同一源列中的新数据的另一张快照复制到目标工作表的下一个空闲列中。

*//keep a copy of Sales numbers for every month
function readSalesNum() {
var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sales plan");
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SalesRecordsMonthly");

// Copy from 17th row, 4th column, all rows for one column 
var rangeToCopy = sheetFrom.getRange(17, 4, sheetFrom.getMaxRows(), 1);

//Paste to another sheet from first cell onwards
rangeToCopy.copyTo(sheetTo.getRange(1, 1));
}*
Run Code Online (Sandbox Code Playgroud)

我为格式不佳而感到抱歉:(我需要修改此脚本,以提及源工作表中的任何列集并将它们复制到目标工作表中。对于新的月份,它应该在下一组列中执行相同的操作,而不是覆盖就像现在一样。此外,该复制仅应针对尚不存在的值进行复制。我知道脚本中有ContentOnly选项,但不确定如何使用。

Ser*_*sas 5

如果我理解正确的话,下面的代码可以满足您的要求,即从第17行的column4的一张工作表中获取值,然后将其复制到另一张工作表中,而不会覆盖从第1行开始的列

function readSalesNum() {
var sheetFrom = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sales plan");
var sheetTo = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SalesRecordsMonthly");

// Copy from 17th row, 4th column, all rows for one column 
var valuesToCopy = sheetFrom.getRange(17, 4, sheetFrom.getLastRow(), 1).getValues();

//Paste to another sheet from first cell onwards
sheetTo.getRange(1,sheetTo.getLastColumn()+1,valuesToCopy.length,1).setValues(valuesToCopy);
}
Run Code Online (Sandbox Code Playgroud)

测试页在这里,做一个拷贝运行的脚本-只能查看

这仅涵盖了您问题的第一部分,第二部分有些令人困惑(如我在上面的评论中所述)。