【发布时间】:2020-08-02 00:19:31
【问题描述】:
我有一个代码,它根据 F 列中选中的属性数量从“输入一揽子费用”中的 D 列中的某些单元格中提取值,如果选中 F,则属性地址出现在 G 列中。我在检查的属性之间平均分配费用,并且响应出现在“一揽子响应”上。如果我检查四个属性并运行脚本,我会在“Blanket Responses”上得到四个正确数量的响应,但是第一个属性名称被列出了四次,而不是每个被检查的属性名称。就我非常有限的知识而言,我已经采取了这一点,但我不确定如何将每个单独的属性列在“一揽子响应”中。我觉得它涉及使用 values.foreach 但我无法让它正常工作。请帮忙! :) 这是代码:
function submitDataB() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("Enter Blanket Expenses"); //Form Sheet
var datasheet = ss.getSheetByName("Blanket Responses"); //Data Sheet
var dataRange = ss.getRange("B4:H28")
var data = dataRange.getValues();
for (var i = 0; i < data.length; ++i) {
var row = data[i];
var checkbox = row[5];
var values = [[formSS.getRange("G4:G28").getValues(),
formSS.getRange("C4").getValue(),
formSS.getRange("D5").getValue(),
formSS.getRange("D6").getValue(),
formSS.getRange("D7").getValue(),
formSS.getRange("D8").getValue(),
formSS.getRange("D9").getValue(),
formSS.getRange("D10").getValue(),
formSS.getRange("D11").getValue(),
formSS.getRange("D12").getValue(),
formSS.getRange("D13").getValue(),
formSS.getRange("D14").getValue(),
formSS.getRange("D15").getValue()]];
if (checkbox == 0)
{
continue;
}
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 13).setValues(values);
}}
这是当前代码的结果
这就是我想要的结果
【问题讨论】:
-
研究使用新的getRangeList(a1Notations) 函数。它允许您一次性检索非连续范围。另请查看RangeList 类;当您调用 getRangeList 时,会返回一个 RangeList 实例,因此您需要该引用来查找单独操作子范围所需的方法。
-
显示预期的输出截图和输入截图
-
很抱歉,我没有意识到我没有收到通知。我已经用屏幕截图编辑了帖子,以了解它现在产生的结果以及我需要它产生的结果。
标签: google-apps-script google-sheets foreach setvalue getvalue