Google Sheet 公式开头的字符是什么?

What are the characters which mark the beginning of a Google Sheet Formula?

我试图在 Google 工作表(或 Excel)中找出标记公式开头的字符,以便过滤掉字符以防止命令注入(例如 =IMPORTDATA()).

我唯一知道的是“=”(等号)和“+”(加号)字符。

我试着在官方网站上搜索它,但没有成功。 除了这些,还有谁知道其他可能有用的角色吗?

= / + ...好吧,这些是唯一的,尽管只有相等的sign作为公式函数的标记。

两个符号都可以通过'字符转义

没有关于此主题的官方 Google 文档 - 一如既往

答案:

Google 工作表公式可以以 =+ 开头。只有这两个。

更多信息:

没有官方文档(实际上support page只提到了=的使用),但你可以自己测试一下。 运行 通过每个 ASCII 字符,并使用它作为公式的前缀 setFormula():

function myFunction() {  
  for(var i = 32; i < 127; i++) {
    var c = String.fromCharCode(i);
    SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]
      .getRange(i - 31, 1)
      .setFormula(c + "SUM(2+3)");
  }
}

在 运行 之后,您会得到一个充满 #ERROR!#NAME?#N/A 错误的列,以及四个已计算的单元格。

计算为公式的单元格对应于 ASCII 符号 =+- (space)。

从这里我们可以通过手动输入直接测试这四个字符:

  • +SUM(2+3) 的计算结果为 5,因此 + 是一个有效的前缀。
  • =SUM(2+3) 的计算结果为 5,因此 = 也是有效前缀。
  • -SUM(2+3) 保留为字符串,因此 + 不是有效前缀。
  • SUM(2+3) 没有得到评估,因此也不能使用。

旁注: 根据 Microsoft's documentation on Excel

Note: Formulas in Excel always begin with the equal sign.

参考文献: