是的,Google在2021年6月发布了新的Apps Script运行时V8,导致许多语法方面发生了变化。以下是一些常见的更改:
字符串的引号语法调整:在旧版中,使用双引号(")或单引号(')来定义一个字符串。但是在V8中,应始终使用模板文字语法(`)来定义一个字符串。
宏解析器的不兼容性:虽然在旧版中可以使用类似“=${expression}”的语法在HTML模板中嵌入表达式,但在V8中此语法不支持。相反,您应该始终使用模板文字的插值表达式(${expression})。
Object.values() 和 Object.entries() 方法:在旧版中,Object.values() 方法将返回对象的所有枚举属性的值,而Object.entries() 方法将返回一组包含对象的每个枚举属性及其值的数组。但在V8中,这些方法将忽略对象原型(即,只返回对象的本地属性)。
示例代码:
// 旧版本的字符串定义方式: var name = "John";
// 在V8中的字符串定义方式:
var name = John
;
// 旧版本中的插值表达式: console.log("Name is: " + name);
// 在V8中的插值表达式:
console.log(Name is: ${name}
);
// Object.values() 和 Object.entries() 的不同输出: var myObject = {a: "Hello", b: "World"}; var values = Object.values(myObject); // 在旧版本中返回 ["Hello", "World"] var entries = Object.entries(myObject); // 在旧版本中返回 [["a", "Hello"], ["b", "World"]]
console.log(values); // 在V8中返回 ["Hello", "World"] console.log(entries); // 在V8中返回 [["a", "Hello