1

显然,该 id 在脚本实例中是唯一的,但该 id 在用户的所有脚本中是唯一的吗?对于域(对于 Google Apps)?还是它在整个宇宙中都是独一无二的(即谷歌)?

如果数据在应用程序之间共享,id 可以是唯一的参考号吗?

4

3 回答 3

3

谷歌已经确认它只是该脚本独有的:

Apps 脚本办公时间问题

于 2012-08-16T15:31:30.413 回答
2

ScriptDB ID 对于预定义脚本的存储数据是唯一的。其余的是未定义的行为,依赖它不是很可靠。在非危急情况下是可能的,但我不建议根据

  • 当前时间。var now = new Date();
  • 当前应用程序 ID。主要是存在,但不是 100% 的情况。var id = UiApp.getActiveApplication().getId();
  • 当前用户 ID。var user = Session.getActiveUser().getUserLoginId();
  • 几个随机数。Math.random();

要获取 ID,需要将所有内容连接到字符串中,计算字符串摘要并使用 Base64 对结果进行编码。但这个解决方案并不是真正的随机值,最好让 Google 创建一个生成真正唯一 UUID 的函数。

代码是

function getUniqueId() {
  var now = new Date();
  var id = UiApp.getActiveApplication().getId();
  var randStr = '';
  for (var i = 0; i < 10; i++) {
    randStr += Math.random();
  }
  var user = Session.getActiveUser().getUserLoginId();
  var str = '' + now + id + randStr + user;
  var digets = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, str);
  var res = Utilities.base64Encode(digets);
  res = res.substr(0, res.length - 2);
  return res;
}
于 2012-08-14T22:43:11.930 回答
2

**根据OP的回答/兆字节的评论进行编辑**

您似乎只能依赖 ID 在当前 ScriptDb 数据库中是唯一的。存储数据库对象时,文档说它被分配了一个“不透明的、不可变的字符串值”,并且它是一个“唯一标识符”

这是一个很好的问题,即该 ID 在整个域中是唯一的,还是在所有事物中都是唯一的(编辑 - 似乎我们不能依赖任何一种情况)

于 2012-08-15T02:04:37.470 回答