有没有办法验证 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"。