有没有办法验证 google 电子表格 ID
Is there anyway to verify a google spreadsheets ID's
所以如果这是一个愚蠢的问题,请不要把我钉在十字架上,
但我一直在涉足 Google 应用程序脚本,主要是它在 Google sheet 中的用途。
通常当我一直在使用 openById()
如果它是一个可能会定期更改的 ID,我会把它放在我的脚本的顶部并添加关于如何编辑的注释(对于我交给 sheet 的用户,或者作为我的提醒,如果我'我有一段时间没有研究它了,我忘记了)。如果它非常停滞并且不太可能改变,我将把它声明为一个变量。
我认为在传播sheet 中使用 "settings" sheet 并且用户输入设置会更友好一些。而不是必须进入脚本编辑器来编辑东西。
但即使通过 sheet 或脚本编辑器,在错误位置添加或删除的单个内容也会造成破坏,例如 space 或 /
至少有了 "settings" sheet,您可以使用数据验证和正则表达式来控制和拒绝用户输入的内容。
所以我想我的问题是 Google 表格 ID 对我来说似乎很陌生,条形长度,我想知道是否有任何方法可以使用正则表达式或其他东西来验证 ID,而不是检查 ID 服务器边。
谢谢:)
您还可以在脚本中使用 openByUrl(),这样用户只需粘贴一个 link。
但如果您必须验证 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。
然后您可以在电子表格中添加另一个单元格,这将从 'sheetRef' 中提取经过验证的 ID。此单元格应包含公式:
= IF (IFERROR( SEARCH( 'invalid' , sheetRef ), 0 ) > 0,
"Invalid",
IFERROR( REGEXEXTRACT( sheetRef,"{(.*?)}" ), "Undetermined" )
)
因此具有上述公式的单元格将显示有效 ID 或 "Invalid"/"Undetermined"。
所以如果这是一个愚蠢的问题,请不要把我钉在十字架上,
但我一直在涉足 Google 应用程序脚本,主要是它在 Google sheet 中的用途。
通常当我一直在使用 openById()
如果它是一个可能会定期更改的 ID,我会把它放在我的脚本的顶部并添加关于如何编辑的注释(对于我交给 sheet 的用户,或者作为我的提醒,如果我'我有一段时间没有研究它了,我忘记了)。如果它非常停滞并且不太可能改变,我将把它声明为一个变量。
我认为在传播sheet 中使用 "settings" sheet 并且用户输入设置会更友好一些。而不是必须进入脚本编辑器来编辑东西。
但即使通过 sheet 或脚本编辑器,在错误位置添加或删除的单个内容也会造成破坏,例如 space 或 /
至少有了 "settings" sheet,您可以使用数据验证和正则表达式来控制和拒绝用户输入的内容。
所以我想我的问题是 Google 表格 ID 对我来说似乎很陌生,条形长度,我想知道是否有任何方法可以使用正则表达式或其他东西来验证 ID,而不是检查 ID 服务器边。 谢谢:)
您还可以在脚本中使用 openByUrl(),这样用户只需粘贴一个 link。
但如果您必须验证 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。
然后您可以在电子表格中添加另一个单元格,这将从 'sheetRef' 中提取经过验证的 ID。此单元格应包含公式:
= IF (IFERROR( SEARCH( 'invalid' , sheetRef ), 0 ) > 0,
"Invalid",
IFERROR( REGEXEXTRACT( sheetRef,"{(.*?)}" ), "Undetermined" )
)
因此具有上述公式的单元格将显示有效 ID 或 "Invalid"/"Undetermined"。