我所知
所以如果我有形式的行
在工作表中,必须将其放置为,每次都应放置在顶部
所以如果另一个时间在形式上
数据将像
现在,我使用此代码,但是它将所有数据追加到末尾,并且仅与一行一起工作,我认为我必须遍历表单中的所有行,但是该怎么做呢?
function getValuesFromForm(form){
var firstName = form.firstName,
lastName = form.lastName,
order = form.order,
sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
sheet.appendRow([order,lastName,firstName]);
}
最佳答案
没有单个函数可以执行此操作,但是编写一个函数并不难。这是一个例子:
function prependRow(sheet, rowData) {
sheet.insertRowBefore(1).getRange(1, 1, 1, rowData.length).setValues([rowData]);
}
我实际上会允许一个可选索引,假设我们要在第二行之后插入,跳过标题。
function insertRow(sheet, rowData, optIndex) {
var index = optIndex || 1;
sheet.insertRowBefore(index).getRange(index, 1, 1, rowData.length).setValues([rowData]);
}
但是
appendRow
还具有另一个有趣的特性,它是并发安全的。这意味着它可以并行触发多次,并且不会困惑。为了使我们的函数并发安全,您必须对其进行lock
编码,如下所示:function insertRow(sheet, rowData, optIndex) {
var lock = LockService.getScriptLock();
lock.waitLock(30000);
try {
var index = optIndex || 1;
sheet.insertRowBefore(index).getRange(index, 1, 1, rowData.length).setValues([rowData]);
SpreadsheetApp.flush();
} finally {
lock.releaseLock();
}
}
然后,要在您的代码中使用它,只需调用..
function getValuesFromForm(form){
//...
insertRow(sheet, [order,lastName,firstName]); //could have passed an extra `2` parameter to skip a one line header
}
关于javascript - Google Apps脚本AppendRow至顶部,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28295056/