0

アドレスラインの値と、getId() を使用したときに取得する ID の違いは何ですか? たとえば、あるドキュメントのgetId()値は次のとおりです。

t8K_TLQPmKzgB72pY4TblUg

アドレスラインのキーは次のとおりです。

0Amu7sNvd2IoudDhLX1RMUVBtS3pnQjcycFk0VGJsVWc

これまでにわかったことは、base64 で getId をエンコードすると、アドレスラインのキーの最後の部分が多かれ少なかれ得られるということです

 (base64Encode(t8K_TLQPmKzgB72pY4TblUg) = dDhLX1RMUVBtS3pnQjcycFk0VGJsVWc=).

0Amu7sNvd2Iouしかし、この部分も古い文書では異なる印象があるため、何の略かはまだわかりません 。そのため0Amu7sNvd2Iou、最初にずっと使用してキーを組み合わせることはできません

これを知る必要がある理由: 私のスクリプトでは getId メソッドを使用していますが、ID を手動で入力するユーザーもいます (アドレスラインのキーから ID をコピーして貼り付けるだけです)。その結果、同じドキュメントを参照しているにもかかわらず、それらを比較しようとすると、完全に異なるように一致させることができません...

この問題に光をもたらしてくれてありがとう

edit @taras: キーと ID を使用してドキュメントを開くこともできます。1 つのドキュメントに 2 つの異なる ID があるのは奇妙です。たとえば、誰かがアドレスラインからドキュメントにコピーペーストした値が、私が開いたファイルと同じかどうかを比較したい場合、同じファイルであっても true を取得しません

var keyFromHeadline = "0Amu7sNvd2IoudDhLX1RMUVBtS3pnQjcycFk0VGJsVWc"
var id = SpreadsheetApp.getActiveSpreadsheet.getId();
if (keyFromHeadline==id) Browser.msgBox("blabla")

したがって、2つの異なる値の理由と、それらを一致させる方法に興味があります

4

2 に答える 2

0

一意のファイルIDが必要な場合は、それらを正規化してください。ユーザーがIDを手動で入力するたびに、fileIdNormalize関数を介してIDを実行するだけです。

function fileIdNormalize(id) {
  if (typeof id == 'string' && id.length > 0)
    return DocsList.getFileById(id).getId();
  return '';
}
于 2012-09-20T10:52:04.990 に答える
0

ただの提案:

base64Encode はアドレス URL の重要な部分を提供しているように見えるので、aを使用しmatchてドキュメントが同じかどうかを確認できます。

何かのようなもの :

    if('manually_entered_key'.match(base64Encode('the_value_obtained_by_getId')==base64Encode('the_value_obtained_by_getId')){
   // consider as the same doc ...
于 2012-09-19T13:51:05.753 に答える