我正在尝试在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,""))");
}
这里发生了什么?我的公式是否“错误”,即使它们在电子表格中工作?
答案 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,''))");