我有一个用于跟踪数据的Google表格。我有一个工作表,可以从一行中的多个工作表中提取数据。该行具有B列的当前日期,然后通过AC提取C列的数据。我正在尝试创建一种机制来快照该数据并将其放在其下一行。我希望能够继续执行此操作,并继续向下推数据,并在下一行中降低电流。这使我可以选择A列中的数据以用于绘图目的。这就是我正在使用的:
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("History");
var source = sheet.getRange("B2:AC2");
var values = source.getValues();
var now = new Date();
values[0][0] = now;
for (var col in values) {
sheet.getRange(sheet.getLastRow(),2,1,28).setValues(values[col]);
}
我使用了多个示例的组合,我想我的思路与翻译相互交叉。寻找帮助来清理此问题或为我提供更好的选择。我最初使用的是appendRow,但是这使我只能使用第一列。我希望能够将快照放置在第二列及其后的相应列中。希望这是有道理的。
在此工作表中,您可以看到我正在将数据从前两张工作表中拉到最后一张工作表中。我跳过第一列,并使用第2行作为确切值。上面的脚本应该采用第2行中的内容,仅将其快照为值,然后将数据移至第3行,将先前的行向下移。这为我提供了价值观的历史。我将使用触发器在每晚的午夜运行此功能,因此数据将每天捕获一次。希望这可以使它更加清楚。
编辑2:让我尝试简化解释。我有一张工作表,其数据通过AC2在B2单元格中。我想获取该数据并将其复制到AC3到单元格B3中,将数据向下移动。因此,在工作表上,您应该看到单元格B3:AC3具有昨天的数据。 B4:AC4是前一天。 B5:AC5在那之前的一天。基本上每天记录一次在B2:AC2中捕获的数据的日志。
是否更清楚我要完成的工作,还是应该进一步解释?我真的很想更正此脚本,因此我可以安排它在周末运行。
[经过几小时的语法使用并意识到我的错误所在后,我注意到了捕获数据并将其应用于范围的方式存在一些问题。这是我的问题的解决方案:
function recordHistory() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("History");
var source = sheet.getRange("B2:AC2");
var values = source.getValues();
sheet.insertRowBefore(3);
sheet.getRange(3, 2, 1, 28).setValues([values[0]]);
};
您可以在解决方案中看到,我意识到了如何将数据存储在数组中并将其与脚本的setValues部分进行匹配。这是我遇到的一个非常基本的问题,但是用例很难解释。 insertRowBefore也是建立工作表结构的重要组成部分。