语法错误:语法:缺少)参数列表-Google表格(超级怪异)

发布于 2025-01-25 03:45:47 字数 2465 浏览 1 评论 0 原文

我一直在尝试保存这个宏,但是我在第29行中收到了错误消息。但是,一切对我来说都是正确的吗?我不明白如何摆脱错误。我会喜欢一些帮助。

这是代码:

function FVMacro() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('A3:B4').activate();
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('A2:B4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('A2:B4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('A3'));
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Fixed Data'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('FAIR VALUE'), true);
  spreadsheet.getRange('C2').activate();
  spreadsheet.getRange('\'Fixed Data\'!B1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('N3:N4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('N4'));
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('N2:N4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('W3:W4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('W4'));
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('W2:W4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('D3:H3').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('D2').activate();
  spreadsheet.getCurrentCell().setValue('=iferror(arrayformula(if(B2:B="",,Ln(B2:B))))');
  spreadsheet.getRange('E2').activate();
  spreadsheet.getCurrentCell().setValue('=iferror(arrayformula(if(C2:C<=0,,ln(C2:C))))');
  spreadsheet.getRange('F2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))');
  spreadsheet.getRange('G2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(F2:F="",,exp(F2:F))))');
  spreadsheet.getRange('H2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(if(F2:F="",,E2:E-F2:F))');
  spreadsheet.getRange('H3').activate();
};

此行导致问题:

spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))');

I've been trying to save this macro but I get the error message at line 29. However, everything looks right to me? I cannot understand how to get rid of the error. I'd love some help.

Here's the code:

function FVMacro() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('2:2').activate();
  spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), 1);
  spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
  spreadsheet.getRange('A3:B4').activate();
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('A2:B4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('A2:B4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('A3'));
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Fixed Data'), true);
  spreadsheet.setActiveSheet(spreadsheet.getSheetByName('FAIR VALUE'), true);
  spreadsheet.getRange('C2').activate();
  spreadsheet.getRange('\'Fixed Data\'!B1').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
  spreadsheet.getRange('N3:N4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('N4'));
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('N2:N4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('W3:W4').activate();
  spreadsheet.setCurrentCell(spreadsheet.getRange('W4'));
  spreadsheet.getActiveRange().autoFill(spreadsheet.getRange('W2:W4'), SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getRange('D3:H3').activate();
  spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
  spreadsheet.getRange('D2').activate();
  spreadsheet.getCurrentCell().setValue('=iferror(arrayformula(if(B2:B="",,Ln(B2:B))))');
  spreadsheet.getRange('E2').activate();
  spreadsheet.getCurrentCell().setValue('=iferror(arrayformula(if(C2:C<=0,,ln(C2:C))))');
  spreadsheet.getRange('F2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))');
  spreadsheet.getRange('G2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(F2:F="",,exp(F2:F))))');
  spreadsheet.getRange('H2').activate();
  spreadsheet.getCurrentCell().setValue('=arrayformula(if(F2:F="",,E2:E-F2:F))');
  spreadsheet.getRange('H3').activate();
};

This line causes the problem:

spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))');

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

听风念你 2025-02-01 03:45:47

用以下错误替换以下错误的行,

spreadsheet.getCurrentCell().setValue("=arrayformula(iferror(if(B2:B=\"\",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))");

该错误源于您使用的单引号'对表格名称而不是”,并且使括号无法正确关闭但是,考虑到必须使用单个引号来完成公式中的参考名称,我已经用双引号替换了单个引号,并且还使用 :b 范围使一切都可以正确

spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,\'FV Charts\'!B4*ln(B2:B)+\'FV Charts\'!C4)))');

> b2

  • 关闭 /en-us/doc/learch/javascript/first_steps/strings/strings“ rel =“ nofollow noreferrer”>处理文本 - javaScript中的字符串
    ;

Replace the line which errors out with:

spreadsheet.getCurrentCell().setValue("=arrayformula(iferror(if(B2:B=\"\",,'FV Charts'!B4*ln(B2:B)+'FV Charts'!C4)))");

The error stemmed from the fact that you were using single quotes ' for the Sheet name instead of " and that made the parentheses not close properly. However, considering the fact that referencing sheet names in a formula has to be done by using single quotes, I have replaced the beginning single quote with a double quote and also escaped it using \ for the B2:B range such that everything closes properly.

You can also escape the single quote from your line like this:

spreadsheet.getCurrentCell().setValue('=arrayformula(iferror(if(B2:B="",,\'FV Charts\'!B4*ln(B2:B)+\'FV Charts\'!C4)))');

Reference

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文