我一直在阅读 Google AppScript 的 PropertiesService 文档。我一直在为我的插件使用以下代码:
var userProperties = PropertiesService.getUserProperties();
我只是想问一下这段代码是否需要一些异常处理。使用 PropertiesService 时处理异常的最佳方式是什么?
提前致谢。
var userProperties = PropertiesService.getUserProperties();
var myProperty = userProperties.getProperty('myNumber');
if(myProperty){
myProperty = JSON.parse(myProperty) + 1;
}
else{
myProperty = 1;
}
userProperties.setProperty('myNumber', JSON.stringify(myProperty))
此代码块将用户属性
myNumber
中存储的数字增加 1。
第一次,当属性
myNumber
尚不存在时 - 它通过将其设置为 1 并将其存储为 setProperty()
来创建它
如果属性已经存在 - 输入
if
语句,并且属性(始终存储为字符串)可以作为数字进行解析和处理
更新
为了完整起见,包括评论中的信息。
您可以通过以下方式处理脚本属性的异常:
try{
var userProperties = PropertiesService.getUserProperties();
var myProperty = userProperties.getProperty('myNumber');
if(myProperty){
myProperty = JSON.parse(myProperty) + 1;
}
else{
myProperty = 1;
}
userProperties.setProperty('myNumber', JSON.stringify(myProperty));
}
catch(error){
console.log(error.stack);
}
调用 setProperty() 或 deleteProperty() 可能会引发数据存储异常,这将使您的脚本在没有 try-catch 处理的情况下失败,所以答案是否定的,不包装这些调用是不安全的。
getUserProperties() 可能不会执行您期望的操作(用户可能是匿名的,即未通过 Google 身份验证),如果您的脚本未绑定到文档,则 getDocumentProperties() 将返回 null,如果属性则 getProperty() 将返回 null未设置,但 TMK 和 getScriptProperties() 不会引发异常。