【问题标题】:Google apps script converting date within formulaGoogle Apps脚本在公式中转换日期
【发布时间】:2020-06-02 17:02:32
【问题描述】:

我正在使用 Google Apps 脚本在工作表中创建一组新的选项卡,除了公式中的一个日期之外,一切都很顺利。我使用的代码是

function MakeANewDaySheet() {
  var date = Utilities.formatDate(new Date(), "GMT", "dd/MM/yyyy")
  var spreadsheet = SpreadsheetApp.getActive();
...
...
  spreadsheet.getRange('O2').activate();
  spreadsheet.getCurrentCell().setFormula("=iferror(indirect(" + date + '!$B3),\"Please select a department\")')
}

我希望脚本放入单元格中的公式指向在此脚本期间创建的另一个工作表,其名称就是今天的日期。当使用脚本输入公式时,它会将 ' 放在一年左右,我似乎无法阻止它这样做。

我想使用公式 '=iferror(indirect(02/06/2020!$B3),"请选择部门")' 它给了我'=iferror(indirect(2/6/'2020'!$B3),"请选择一个部门")'

我尝试在 " 和 ' 之间切换,包括 \ 而不是,希望这很容易,但没有运气。

谁能指出可能(希望)是一个简单的语法错误。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    这就是您使用INDIRECT 引用另一个工作表(选项卡)的方式:

    =INDIRECT("'"&"03/06/2020"&"'!"&"$B3")
    

    要通过 Apps 脚本设置此公式,您必须在每次公式中有双引号时使用转义字符 (\")。所以你可以这样做:

    var formula = "=IFERROR(INDIRECT(\"'\"&\"" + date + "\"&\"'!\"&\"$B3\"), \"Please select a department\")";
    spreadsheet.getCurrentCell().setFormula(formula);
    

    注意:

    另外,如果你想将此公式设置为O2,则不需要先激活单元格,你可以这样做:

    spreadsheet.getRange('O2').setFormula(formula);
    

    参考:

    【讨论】:

      【解决方案2】:

      indirect 函数将单元格引用解析为字符串,但在这种情况下,日期不会在公式中以字符串形式写入。请试试这个

      spreadsheet.getCurrentCell().setFormula('=iferror(indirect("' + date + '" & "!$B3"),"Please select a department")')

      【讨论】:

      • 那越来越接近我需要的了,现在单元格中的输出是=iferror(indirect("3/6/2020" & "!$B3"),"Please select a department") 这很好,只是间接函数在其文本时似乎没有将工作表值识别为工作表.我想我将尝试在函数开头将日期转换为字符串,然后插入该字符串而不是日期。如果您在此期间想到其他任何事情,请告诉我。如果没有,那是你的帮助@Alpesh Jain
      • 嗨,尼基,我已经在测试表上试过了,似乎工作正常。也许您应该检查您使用脚本创建的工作表是否与公式中的名称完全相同
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      相关资源
      最近更新 更多