gpt4 book ai didi

javascript - 谷歌应用程序脚本 AppendRow 到顶部

转载 作者:数据小太阳 更新时间:2023-10-29 04:57:02 27 4
gpt4 key购买 nike

据我所知

appendRow(rowContents) add values to the bottom of the spreadsheet But how to add data from form in multiple rows in top of spreadsheet?

所以如果在表单中我有行

  1. first, surname, name
  2. second, surname, name
  3. third, surname, name

在工作表中它必须被放置为,并且每次都到顶部

所以如果另一个时间会是

  1. fourth, surname, name
  2. fifth, surname, name
  3. six, surname, name

数据会像这样添加

enter image description here

现在我使用这段代码,但它会将所有数据附加到末尾并且仅适用于一行,我想我必须循环遍历表单中的所有行,但如何做到这一点?

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 还有另一个有趣的特性,它是并发安全的。这意味着它可以并行触发多次并且不会搞砸。为了使我们的函数并发安全,您必须锁定它,如下所示:

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 - 谷歌应用程序脚本 AppendRow 到顶部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28295056/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com