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.
参考文献:
我试图在 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.