javascript - getRange/setValues 并不总是有效

标签 javascript google-apps-script google-sheets

我帮助维护一个 Google 电子表格,其中通过 HTML 表单添加新数据。

添加新数据时,新数据的插入点取决于表单字段之一(申请接收日期)。

该脚本查找工作表中应插入数据的位置并执行 3 件事:

  1. 在正确位置插入空白行
  2. 复制上面的行(以便复制公式和条件格式)
  3. 用表单中输入的值替换副本中单元格中的数据

问题是单元格 A 到 I 是基于值的(从表单填充),单元格 M 到 O 也是如此,但单元格 J、K、L 是基于 A 到 I 中的某些单元格的计算。

这意味着我必须对 getRange/setValues 进行 2 次调用,有时还要进行第二次调用(对设置单元格 M、N、O 的调用不起作用。结果是使用单元格 A 中的正确数据创建了一个新行I(以及 J、K、L),但单元格 M、N、O 保持为上行单元格中的内容。

这是相关代码。

// Assign object data for cells A to I
var newvalues = [
            [ username, applyDate, maritalStatus, sponsorApprovalDate, processingOffice, inProcessDate, extraDocsRequestedDate, nonVisaExempt, decisionMadeDate ]
          ];

// Set cells A to I with data from form
sheet.getRange('A' + startingRowIndex + ':I' + startingRowIndex).setValues(newvalues);

// Now assign object data for cells M to O
newvalues = [
            [ coprReceivedDate, location, notes ]
          ];

// Set cells M to O with data from form
sheet.getRange('M' + startingRowIndex + ':O' + startingRowIndex).setValues(newvalues);

如上所述,第二个sheet.getRange('...').SetValues()调用无法设置值。

有什么想法吗?

最佳答案

您可以在行的开头获得一个“ anchor ”,然后使用Range.offset(),而不是完全重新计算输出范围的位置。方法来定义相对于 anchor 的附加范围。

// Assign object data for cells A to I
var newvalues = [
            [ username, applyDate, maritalStatus, sponsorApprovalDate, processingOffice, inProcessDate, extraDocsRequestedDate, nonVisaExempt, decisionMadeDate ]
          ];

// Get range "anchor" for data from form
var newRow = sheet.getRange('A' + startingRowIndex );

// Set cells A to I with data from form
newRow.offset(0,0,newvalues.length,newvalues[0].length).setValues(newvalues);

// Now assign object data for cells M to O
newvalues = [
            [ coprReceivedDate, location, notes ]
          ];

// Set cells M to O with data from form
newRow.offset(0,13,newvalues.length,newvalues[0].length).setValues(newvalues);

关于javascript - getRange/setValues 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33382785/

相关文章:

php - JSON:字符集和获取键/值

用于音频控制的 Javascript 按钮切换

javascript - 元素 A 位于元素 B 之上。无论如何,当悬停在元素 A 上时,让页面看起来元素 B 仍在悬停?

javascript - Google Sheets App Script 距离计算器增强功能

javascript - 在 Google Apps 脚本网络应用中显示文件和文件夹

javascript - 如何使用javascript读取txt文件并将内容复制到谷歌电子表格文件中

google-apps-script - GAS 脚本是否可以锁定 Google 表格,以便在脚本完成之前没有其他人可以更改它

javascript - 如何使用 Meteor 空格键模板和每行的行号渲染表格?

google-apps-script - Google 电子表格脚本单元格参数

google-apps-script - Google App Script onedit 限制为工作表