Google apps script setFormulaR1C1()不';在所有情况下都不能转换为A1符号。。。?

Google apps script setFormulaR1C1()不';在所有情况下都不能转换为A1符号。。。?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我正在尝试编写一个函数,使用相对R1C1表示法在单元格中设置公式,因为我不知道单元格的行号。我已经成功地使用了cell.setFormulaR1C1(string)两次,但在第三种情况下,我不确定什么不起作用 当我将此字符串传递给应用于单元格H34的setFormulaR1C1()时 "=R[0]C[-4]*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I;MATCH(R[0]C[-6];CSE!A:A;0);1);\"[0-9]+\");\"0\"))" ;

我正在尝试编写一个函数,使用相对R1C1表示法在单元格中设置公式,因为我不知道单元格的行号。我已经成功地使用了cell.setFormulaR1C1(string)两次,但在第三种情况下,我不确定什么不起作用

当我将此字符串传递给应用于单元格H34的setFormulaR1C1()时

"=R[0]C[-4]*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I;MATCH(R[0]C[-6];CSE!A:A;0);1);\"[0-9]+\");\"0\"))" ;
应该吐出来

=D34*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I,MATCH(A34,CSE!A:A,0),1),"[0-9]+"),"0"))
……对吗?但是它并没有将字符串转换成A1符号,我收到了一个解析错误。反斜杠

在其他地方,我成功地使用了一个非常相似的公式

paymentDueFormulaCell.setFormulaR1C1("=R[0]C[-3]-R[0]C[-2]-R[0]C[-1]");
当设置到单元格J34中时,它将正确呈现为

=G34-H34-I34

有人能凭直觉看出我可能遗漏的差异吗?

你试过使用间接公式吗?它将任何字符串转换为单元格引用

=间接(“某些字符串”和“某些字符串”)

例如:

=间接(“A”和“1”)将被解释为单元格A1 检查电子表格中是否存在CSE工作表,以及代码是否使用了正确的参数分隔符

解释 我创建了一个简单的函数来测试OP提供的公式。起初它不起作用,但后来我意识到我的电子表格没有一个名为CSE的表格。添加后,下面的代码工作正常

function myFunction() {
  var ss = SpreadsheetApp.getActive();
  var range = ss.getRange('H34');
  var formula = '=R[0]C[-4]*VALUE(IFERROR(REGEXEXTRACT(INDEX(CSE!I:I,MATCH(R[0]C[-6],CSE!A:A,0),1),"[0-9]"),"0"))';
  range.setFormulaR1C1(formula);
}
备注:

  • 我用撇号替换了外部引号,并删除了内部引号的scape
  • 我将分号替换为逗号,因为后者对应于电子表格中的默认区域设置

  • 注意:发布版本1后,我注意到代码公式使用分号作为公式参数分隔符,但几行之后,当显示预期结果时,公式使用逗号而不是分号
    .setFormulaR1C1(公式)
    要求将正确的公式作为参数传递,以便转换R1C1样式引用。

    我也遇到过类似的情况。似乎不能将R1C1表示法与A1表示法结合起来。假设如果你想坚持使用R1C1,你应该从CSE更改索引引用!I:我要去CSE!C9:C9

    当然可以。您对如何使用此功能有何见解?也许我在制造XY问题,但这感觉是对的。