- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
据我所知
appendRow(rowContents) add values to the bottom of the spreadsheet But how to add data from form in multiple rows in top of spreadsheet?
所以如果在表单中我有行
- first, surname, name
- second, surname, name
- third, surname, name
在工作表中它必须被放置为,并且每次都到顶部
所以如果另一个时间会是
- fourth, surname, name
- fifth, surname, name
- six, surname, name
数据会像这样添加
现在我使用这段代码,但它会将所有数据附加到末尾并且仅适用于一行,我想我必须循环遍历表单中的所有行,但如何做到这一点?
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/
所以我对 JS 和 Google 脚本总体来说还很陌生,我一直在尝试测试一些 Examples他们有,但是当我尝试附加一行时,它说我没有这样做的权限。 我读到了一些其他问题,说自定义函数没有编辑其他行
这是代码: function worksheet(){ var arraymi = worksheetmi.getRange("A2:D").getValues(); var arraymi_
我在 Qt Quick 中有一个 TreeView 和一个子类 QStandardItemModel。 this.appendRow() 在模型的构造函数中工作得很好。 但是,如果我在构造函数之后调用
据我所知 appendRow(rowContents) add values to the bottom of the spreadsheet But how to add data from for
我从任何编码中都休息了很长时间(比如 5 年),所以现在当我回来做一些有趣的代码和我自己的使用时,我感到完全迷失了,尤其是我实际上从未在电子表格中写过任何宏。所以这对我来说是一个挑战,尤其是我还没有参
function myFunction() { var url = 'https://api.github.com/users/chaimf90/repos' var response
使用 google-spreadsheet 中的 google-apps-script,我尝试使用 fetchUrl 获取数百行数据,并使用 sheet.appendRow 将它们粘贴到我的工作表中。
据我所知:“appendRow(rowContents) 将值添加到电子表格的底部但是如何将表单中的数据添加到电子表格顶部的多行中?” 现在我正在寻求一些帮助,以便始终使用 '.appendRow'
这是我得到的: QTreeView 小部件 (*); 源模型 MainModel 继承自 QStandardItemModel。没有重新实现虚拟 data() const 方法; 代理 MainFil
我想将表单提交复制到不同的工作表,以便可以编辑复制的数据而不影响原始提交。 我有以下代码: function copy2(){ var responses = SpreadsheetApp.get
我目前正在开发一个脚本,我将数据存储在电子表格中,但我找不到让 sheet.appendRow() 从特定列开始的方法,所以问题是:有办法吗这个? 具体来说,我想设置这个 for(var i in k
我有一个 Google Apps 脚本网络应用程序,它从请求中获取值并使用 appendRow 方法将它们插入到新行中。除了插入值,我还想在几列中插入公式。是否可以在 appendRow() 中执行此
我正在检索电子邮件正文并将其插入到 Google 表格中。不断收到 [Ljava.lang.Object;@29080d11 错误。我已经很好地检索了数据。我在构建数组以附加到谷歌表格时遇到了一些问题
这是我关于 stackoverflow 的第一个问题😊。 背景: 来自 appendRow(rowContents) 的引用我知道此操作是原子操作,这意味着处理对工作表最后一行的并发访问并防止潜在问
我是一名优秀的程序员,十分优秀!