Apps Script复制历史表中的行值到第一个空行



需要代码帮助

你好!需要代码方面的帮助…有商品/服务。它们上的数据每天都在变化(在本例中,为此使用了RANDBETWEEN函数)。在另一张纸上,这些数据被传送到一条线上。有必要每天一次(为此配置了触发器)将数据从这一行传输到与日期相对应的最近的空行。我在Apps Script中编写代码,但它只向所有产品传递一个值。我写错了什么?救命啊,好心人。

链接到文件

function ProductHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("История данных");
var value = sheet.getRange('B1:L1').getValues();
var range = sheet.getRange('B1:L').getValues();
var lastRow = null;
var i = 0;
while(i < range.length) {
if (range[i][0] !== "") {
i++;
} else {
lastRow = i +1;
break;
}
}
sheet.getRange(`B${lastRow}:L${lastRow}`).setValue(value)
}

在写入历史表之前,应该过滤掉源数据中的空白值。一旦你有了数据,使用Sheet.appendRow()。要每天运行函数脚本,创建一个时间驱动触发器。

你可能想尝试使用以下参数的appendValuesToArchiveSheet脚本:

// [START modifiable parameters]
var rangeToLog = 'Данные!B2:B';
var sheetToLogTo = 'История данных';
// [END modifiable parameters]

脚本将在现有数据的底部添加新行。您的列A包含=IF(A4<TODAY();A4+1;"")公式,您将不得不删除,以便新数据可以立即写入现有数据的下面。脚本将自动在它写入的行上插入时间戳。

最新更新