尝试使用设置公式

时间:2017-06-20 16:23:52

标签: google-apps-script

我正在尝试在google工作表中创建手动存档功能(基于表单响应)。在这一点上,这是一个科学怪人的努力,因为我已经收集了点点滴滴将它组合在一起。我已经接近完成了,但是当我尝试将公式清除到存档后将其重新添加到工作表中时,我已经碰壁了。

我确信这对我来说并不奇怪,我觉得我在这里缺少一些简单的东西。下面的公式直接从活动电子表格中复制,它们工作正常,但出于某种原因,我无法解析脚本以便在清除工作表后将其放回原处。我很感激任何人愿意提供的帮助。

我收到错误:

  

缺少)参数列表后。

在两行“cell.setFormula”代码中,下面不会“代码阻止”:

function addFormulas(){

  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var sourcesheet = sheet.getSheetByName("Form Totals");

  //Add formula back into Column A
  var cell = sourcesheet.getRange("A2:A1000");
  cell.setFormula("=D2");

 //Add formula back into Column U
  var cell = sourcesheet.getRange("U2:U1000");

  cell.setFormula("=IF(ISNUMBER(FIND("14.29",P2)),14.29,IF(ISNUMBER(FIND("5.24",P2)),5.24,""))");

  //Add formula back into Column V
  var cell = sourcesheet.getRange("V2:V1000"); 
  cell.setFormula("=IF(ISNUMBER(FIND("14.29",U2)),U2*Q2,IF(ISNUMBER(FIND("5.24",U2)),U2*Q2,""))");

}

这里发生了什么?我的公式是否“错误”,即使它们在电子表格中工作?

2 个答案:

答案 0 :(得分:1)

你必须小心使用“”。就像你写的那样,控制台就像

一样
cell.setFormula("=IF(ISNUMBER(FIND("

并且他找不到失踪者。

你应该像

一样写
cell.setFormula("=IF(ISNUMBER(FIND(\"14.29\",U2)),U2*Q2,IF(ISNUMBER(FIND(\"5.24\",U2)),U2*Q2,\"\"))");

答案 1 :(得分:1)

在JavaScript中,双引号用于表示字符串类型。如果你把任何东西放在" ",它告诉JS代码解析器将这些双引号之间的任何内容视为字符串。

String也是Range类的setFormula()方法的唯一有效参数类型,因此括号内的任何内容都应该是此类型。

看一下公式

中的这一部分
cell.setFormula("=IF(ISNUMBER(FIND("14.29",

语法分析器会将双引号的第一个之间的部分识别为字符串,但14.29将被视为字符串结束的数字。解析器将立即停止并抛出错误。

解决方案是对公式中的字符串使用单引号,例如

range.setFormula("=IF(ISNUMBER(FIND('14.29',P2)),14.29,IF(ISNUMBER(FIND('5.24',P2)),5.24,''))");