Google电子表格根据单元格值

时间:2017-12-01 23:14:06

标签: google-sheets google-spreadsheet-api

我是新手,所以仍然试图弄清楚一切是如何运作的。

我有一张工作表可以收集Google表单的回复。基于其中一个问题的答案,我希望该表中的行能够一起移动到不同的工作表文档(而不是同一文档中的工作表)。

我让它每分钟设置一个基于时间的触发器,以便新的响应进入它会将它们踢到正确的文档,然后从原始电子表格中删除该行。

我能够在那里获得部分路线。我希望它采取行,A到E列,将它们移动到正确的文档,找到下一个打开行的位置,并将数据放在新文档的A到E列中。

此时我的问题是将行移动到新文档的位置。我在目标页面上的列G-Z中保存了公式。它正在找到带有公式的最后一行并在该行之后放置该行(位于页面的最底部)。我很确定这与使用数组有关吗?但我可能错了。有没有办法只查看目标页面列A-E,找到下一个空白行,并将A-E从原始文件复制到新页面?

 arr = [], 
values = sheetOrg.getDataRange().getValues(),
i = values.length;
while (--i) {
  if (value1ToWatch.indexOf(values[i][1]) > -1) {
    arr.unshift(values[i])
   sheetOrg.deleteRow(i + 1) 
   sheet1in.getRange(sheet1in.getLastRow()+1, 1, arr.length, arr[0].length).setValues(arr); 
   };

我有多个If语句,每个语句都对“valueToWatch”和“Sheet1in”进行了一些更改,用于不同的值和目标页面。如果这些信息有帮助的话。

1 个答案:

答案 0 :(得分:0)

您可以在列中找到包含数据的最后一个单元格:

function findLastValueInColumn() {
    var column = "A";  // change to whatever column you want to check
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
    var lastDataRow = sheet.getDataRange().getLastRow();

    for (var currentRow = lastDataRow; currentRow > 0; currentRow--) {
        var cellName = column + currentRow;
        var cellval = sheet.getRange( cellName ).getValue();
        if (cellval != "") {
            Logger.log("Last value in Column " + column + " is in cell " + currentRow);
            break;
        }
    }
}

然后,您可以使用此功能找出启动新数据的位置。