数据输入表单,在谷歌工作表中为指定列选择下一个打开的行



我正在尝试创建一个数据输入表单,该表单将数据提交到数据表的第一个打开行。问题是,数据表的其中一列中有公式,所以它并不是真正的空。这导致当前脚本考虑带公式的单元格,并且只选择其后面的行。

你们能帮我解决这个问题吗。

当前脚本如下:

function submitData() {
var ss        = SpreadsheetApp.getActiveSpreadsheet();
var formSS    = ss.getSheetByName("FORM"); //Form Sheet
var datasheet = ss.getSheetByName("DATA"); //Data Sheet
//Input Values
var values = [[formSS.getRange("D4").getValue(),
formSS.getRange("D8").getValue(),
formSS.getRange("D12").getValue(),
formSS.getRange("D16").getValue(),
formSS.getRange("D20").getValue(),
formSS.getRange("D24").getValue(),
formSS.getRange("D28").getValue(),
formSS.getRange("L32").getValue()]];
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 8).setValues(values);
}

您可以通过评估行内容来找到第一个可用行

样品

var freeRow;
var columnI = datasheet.getRange("I1:I" + datasheet.getLastRow()).getDisplayValues().flat();
for(var i = 0; i < columnI.length; i++){
if(columnI[i] == "") {
freeRow = i + 1;
break;
}
}
datasheet.getRange(freeRow, 1, 1, 8).setValues(values);

此外,您正在使用Form submit触发器,您使用事件对象

样品

function submitData(e) {
var range = e.range;
var row = range.getRow();
// this is the row into which the latest form response has been inserted - do with it what you need
...
}

最新更新