地址行中的键值与Google Script中的获取Id()值之间的差异

时间:2012-09-19 13:37:09

标签: google-apps-script

我想问一下,当我使用getId()时,adressline中的值与我得到的id之间有什么区别。 例如,对于一个文档,getId()值为:

t8K_TLQPmKzgB72pY4TblUg

在地址线中,关键是:

0Amu7sNvd2IoudDhLX1RMUVBtS3pnQjcycFk0VGJsVWc

我到目前为止所知道的是,当你在base64中对getId进行编码时,你或多或少会得到地址线中密钥的最后一部分

 (base64Encode(t8K_TLQPmKzgB72pY4TblUg) = dDhLX1RMUVBtS3pnQjcycFk0VGJsVWc=).

但我仍然不知道0Amu7sNvd2Iou代表什么,因为我的印象是这些部分在旧文档中也有所不同,因此我不能只是一直使用密钥{{1在开头

为什么我需要知道这一点:我的脚本使用getId方法,但有些用户手动填写他们的ID(他们只是从adressline的密钥中复制它)。结果是,当我尝试比较它们虽然它们引用相同的文档我无法匹配它们就像它们完全不同...

非常感谢为这个问题带来光明

编辑@taras: 我也可以用密钥和id打开文档。奇怪的是,一个文档有两种不同的id。例如,如果我想比较某人从地址线复制到文档的值是否与我打开的文件相同,我将不会得到真实,即使它是同一个文件

0Amu7sNvd2Iou

因此我感兴趣的是两个不同值的原因是什么以及我如何匹配它们

2 个答案:

答案 0 :(得分:0)

只是一个建议:

由于base64Encode似乎为您提供了地址网址的重要部分,因此您可以使用match来检查文档是否相同。

类似的东西:

    if('manually_entered_key'.match(base64Encode('the_value_obtained_by_getId')==base64Encode('the_value_obtained_by_getId')){
   // consider as the same doc ...

答案 1 :(得分:0)

如果您需要具有唯一的文件ID,请将其标准化。每次用户手动输入ID时,只需通过fileIdNormalize函数运行它:

function fileIdNormalize(id) {
  if (typeof id == 'string' && id.length > 0)
    return DocsList.getFileById(id).getId();
  return '';
}