1

明らかに、IDはスクリプトのインスタンス内で一意ですが、IDはユーザーのすべてのスクリプトで一意ですか?ドメイン用(Googleアプリ用)?それとも、それは宇宙全体(つまりGoogle)でユニークですか?

データがアプリケーション間で共有されている場合、IDを一意の参照番号にすることはできますか?

4

3 に答える 3

3

Googleは、それがそのスクリプトにのみ固有のものであることを確認しました:

Apps Script オフィスアワーに関する質問

于 2012-08-16T15:31:30.413 に答える
2

ScriptDB IDは、事前定義されたスクリプトの保存データに対して一意です。残りは未定義の動作であり、それに依存することはあまり信頼できません。重大ではない状況では可能ですが、に基づいて一意のIDを生成することはお勧めしません

  • 現在の時刻。var now = new Date();
  • 現在のアプリケーションID。主に存在しますが、100%の場合ではありません。var id = UiApp.getActiveApplication().getId();
  • 現在のユーザーID。var user = Session.getActiveUser().getUserLoginId();
  • いくつかの乱数。Math.random();

IDを取得するには、文字列内のすべてを結合し、文字列ダイジェストを計算し、Base64を使用して結果をエンコードする必要があります。ただし、このソリューションは真にランダムな値ではないため、真に一意のUUIDを生成する関数を作成するようにGoogleに依頼することをお勧めします。

コードは

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 に答える