使用过滤器复制电子表格



你好,我正试图将一个电子表格复制到另一个,但我想使用一个过滤器,以便只复制D列中包含特定值的行(Jean、Fred、Mary(。我还希望它在每次运行脚本时为复制的行的第一列添加一个TimeStamp。

该脚本将每天运行,它旨在完全替换前几天的信息,而不是附加到信息中

我拼凑了一个脚本,可以很好地复制整个电子表格,但我如何才能根据D列中的名称复制某些行呢?

非常感谢你的帮助!

var sourceSpreadsheetID= "Spreadsheet1 ID";
var sourceWorksheetName= "BusinessDetails";
var targetSpreadsheetID= "Spreadsheet2 ID";
var targetWorksheetName= "Sheet5";
function importBusinessDetailsData(){
var thisSpreadsheet=SpreadsheetApp.openById("Spreadsheet1 ID");
var thisWorksheet=thisSpreadsheet.getSheetByName("BusinessDetails");
var thisData=thisWorksheet.getDataRange();
var toSpreadsheet=SpreadsheetApp.openById("Spreadsheet2 ID");
var toWorksheet=toSpreadsheet.getSheetByName("Sheet5");
var toRange=toWorksheet.getRange(1,2, thisData.getNumRows(), thisData.getNumColumns())
toRange.setValues(thisData.getValues());
setTimeStamp()
}
function setTimeStamp() {
SpreadsheetApp.getActive().getSheetByName('Sheet5')
.getRange('A2:A').setValue(new Date())
}

我相信您的目标如下。

  • 您想要从";BusinessDetails"一张";电子表格1 ID";至";片材5";一张";电子表格2 ID";。此时,您希望通过筛选列"来复制特定的行;D";。您想要复制包括列"中的值CCD_ 1的行;D";。并且,您希望将时间戳添加到第一列

在这种情况下,下面的修改如何?

发件人:

var toRange=toWorksheet.getRange(1,2, thisData.getNumRows(), thisData.getNumColumns())
toRange.setValues(thisData.getValues());
setTimeStamp()

收件人:

var timeStamp = new Date();
var checkValues = ["Jean", "Fred", "Mary"];
var values = thisData.getValues().filter(r => checkValues.some(e => r[3].includes(e))).map(r => [timeStamp, ...r]);
if (values.length > 0) {
toWorksheet.getRange(1, 2, values.length, values[0].length).setValues(values);
}
  • 在该修改中,从only copies rows that contain certain values in column D (Jean, Fred, Mary)开始,行包含列"中的Jean, Fred, Mary的值;D";检索。但是,当您想要检索Jean, Fred, Mary的值存在于列"中的行时;D";,请修改如下。

    • 来自

      var values = thisData.getValues().filter(r => checkValues.some(e => r[3].includes(e))).map(r => [timeStamp, ...r]);
      
    • var values = thisData.getValues().filter(r => checkValues.includes(r[3])).map(r => [timeStamp, ...r]);
      

参考文献:

  • 过滤器((
  • String.protype.includes((
  • Array.prototype.includes((

相关内容

最新更新