我有一张 GSheet。 它有 3 张桌子:蓝色、紫色、绿色
蓝表自动从其他来源获取数据;因此,每天该表都会自动变大。与此无关
紫色表使用UNIQUE和QUERY自动从蓝色表获取数据。也与此无关
绿色表格需要脚本。该脚本将有一个触发器(每周启动一次)。 它所要做的就是 - 复制紫色表中的最后一行并附加到绿色表中。
请帮我解决这个问题, 谢谢。
函数复制数据() { 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]]);
//从最后一行内容开始将数据粘贴到目标表中 //??????????????????????????? }
}
这是我到目前为止所做的,但我无法完成脚本,而且我不确定“获取数据”部分是否正确。
您可以尝试以下代码:
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]);
}