如何从Google Sheet App脚本返回#N / A?

时间:2019-05-08 19:49:24

标签: javascript google-apps-script google-sheets google-sheets-formula custom-function

这似乎是一个琐碎的问题。但是我花了一些时间,我仍然无法从互联网上找到任何线索。我一直在尝试解决方法。他们都不好。返回nullundefined只会导致一个空白单元格。当然,返回“#N / A”(作为字符串)远不是很好。

例如,我们在Google App脚本中有一个功能。

function GIVE_ME_NA() {
    return NA();     // This won't work
}

在A1和A2单元格中

A1 =GIVE_ME_NA()
A2 =ISNA(A1)

A1和A2中显示的理想结果是

    A       B
1  #N/A   TRUE

在工作表公式中,我们可以简单地使用=NA()。但是在App Script中,我不能。

3 个答案:

答案 0 :(得分:1)

如果您

return "=NA()"?

我不清楚您使用此气体的方式为何要使用气体解决方案,因为无论如何您都将其用作单元内功能。

如果您使用的是普通脚本,则可以使用类似的内容

ss.getRange(1,1)setFormula('=NA()');

答案 1 :(得分:0)

我实际上对此很感兴趣,因为我通常不执行内联函数(太慢的enmasse)。

您必须使用引号引起来的范围(作为字符串)来调用它,但这是可行的。

function getThing(aRange){
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  var data = sheet.getRange(aRange).getValues();
  Logger.log(data);

  var result = [];
  for (var i=0; i<data.length;i++)
    {
      var row = [];
      for (var j=0; j<data[0].length; j++)
          {
               if (data[i][j] == "")
                   { 
                   row.push("=NA()"); 
                   continue;}                  

               var value = data[i][j];
               // DO OTHER LOGIC TO GET WHAT YOU WANT TO RETURN
               row.push(value);
          }//for loop
       result.push(row);

    }//for loop

  return result;

}//*****************************************************************************

答案 2 :(得分:0)

这是不可能的,因为自定义函数支持的返回值为字符串,数字,布尔值和日期。

您已经注意到返回NA()不起作用。

自定义函数无法返回公式,用户return '=NA()'在Google表格中被设置为TEXT值,直到用户手动编辑单元格值(或将单元格置于编辑模式,然后按 Enter

相关

参考