如果这是一个愚蠢的问题,那么不要把我钉在十字架上,
但我一直在涉足Google App Scripts,主要是它在Google表格中的用途。
通常在我使用openById()
时
如果它是一个可能会定期更改的ID,我会把它放在我的脚本的顶部,并添加有关如何编辑的注释(对于用户我手册,或者作为提醒,如果我没有工作它有点让我忘了)。如果它非常不稳定且不太可能改变,我只会将其声明为var。
我认为在电子表格中有一个“设置”表并且用户输入设置会更加用户友好。而不是必须进入脚本编辑器来编辑东西。
但即使是通过工作表或脚本编辑器,在错误的地方添加或删除的单个内容也可能导致havock,如空格或/
至少使用“设置”表,您可以使用数据验证和正则表达式来控制和拒绝用户输入的内容。
所以我想我的问题是Google表格ID对我来说似乎很陌生,条形长度,我想知道是否有任何方法可以使用正则表达式或其他东西来验证ID,而不是检查ID服务器端。 谢谢:))
答案 0 :(得分:1)
您还可以在脚本中使用openByUrl(),以便用户只需粘贴链接即可。
但如果您必须验证ID:
ss = SpreadsheetApp.getActiveSpreadsheet();
function validate(){
//"sheetRef" is the name of the cell where you enter the id
//this function takes the string value of "sheetRef"
//and replaces it with the validation result.
var sheetRefCell = ss.getRangeByName("sheetRef");
var sheetRefString = sheetRefCell.getValue();
var validationResult = '{' + sheetRefString + '}';
try {
validationResult = validationResult +
' \n $ references: \n [' +
SpreadsheetApp.openById(sheetRefString).getName() +
']';
}
catch (e) {
validationResult = validationResult +
' \n $ is an invalid reference: \n [' +
e +
']';
}
finally {
sheetRefCell.setValue(validationResult);
}
}
当您运行此功能时,它将替换您在' sheetRef'中输入的值。 (ID)具有验证结果消息的单元格。我建议您还添加基于时间的触发器,以便不断重新验证您的ID。
然后,您可以在电子表格中添加另一个单元格,该单元格将从“工作表参考”中提取经过验证的ID。此单元格应包含以下公式:
= IF (IFERROR( SEARCH( 'invalid' , sheetRef ), 0 ) > 0,
"Invalid",
IFERROR( REGEXEXTRACT( sheetRef,"{(.*?)}" ), "Undetermined" )
)
因此具有上述公式的单元格将显示有效的ID或"无效" /"未确定"。