如何复制一个表中的最后一行并附加到同一 GSheet(同一选项卡)中的另一个表

问题描述 投票:0回答:1

我有一张 GSheet。 它有 3 张桌子:蓝色、紫色、绿色

  1. 蓝表自动从其他来源获取数据;因此,每天该表都会自动变大。与此无关

  2. 紫色表使用UNIQUE和QUERY自动从蓝色表获取数据。也与此无关

  3. 绿色表格需要脚本。该脚本将有一个触发器(每周启动一次)。 它所要做的就是 - 复制紫色表中的最后一行并附加到绿色表中。

下面是GSheet链接 https://docs.google.com/spreadsheets/d/1lv4VytZu8uI1OYX_FjR5aH4YM8CX7PCSr5Uuk_bViD8/edit?gid=1875452837#gid=1875452837

请帮我解决这个问题, 谢谢。

函数复制数据() { const ss = SpreadsheetApp.getActive();

//获取源表和目标表 const ssh = ss.getSheetByName("TestSheet"); const tsh = ss.getSheetByName("TestSheet");

//从源表中获取数据 const data = ssh.getRange("I"+ssh.getLastRow()+":K"+ssh.getLastRow()).getValues();

/**

  • @类型{任何[]} */ var r;

    //选择需要的列(索引从0开始) const fdata = data.map(r=>[r[0],r[1],r[2]]);

    //从最后一行内容开始将数据粘贴到目标表中 //??????????????????????????? }

}

这是我到目前为止所做的,但我无法完成脚本,而且我不确定“获取数据”部分是否正确。

google-apps-script copy-paste gsheets
1个回答
0
投票

使用 Apps 脚本附加最后一行并设置每周触发器

您可以尝试以下代码:

function copyData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TestSheet');
  var purpleRange = sheet.getRange('I3:K19');
  var greenRange = sheet.getRange('M2:O19');

  var purpleData = purpleRange.getValues();
  var lastRowIndex = purpleData.length - 1;
  while (lastRowIndex >= 0 && purpleData[lastRowIndex].join("") === "") {
    lastRowIndex--;
  }

  var lastRow = purpleData[lastRowIndex];
  var greenData = greenRange.getValues();
  var emptyRowIndex = greenData.findIndex(row => row.every(cell => cell === ''));

  if (emptyRowIndex === -1) {
    emptyRowIndex = greenData.length;
  }

  var greenRowIndex = emptyRowIndex < greenData.length ? emptyRowIndex : greenData.length;
  greenRange.getCell(greenRowIndex + 1, 1).setValue(lastRow[0]);
  greenRange.getCell(greenRowIndex + 1, 2).setValue(lastRow[1]);
  greenRange.getCell(greenRowIndex + 1, 3).setValue(lastRow[2]);
}
© www.soinside.com 2019 - 2024. All rights reserved.