57

特定のセル内のテキストの MD5 または SHA1 ハッシュを計算し、それを Google スプレッドシートの別のセルに設定するにはどうすればよいですか?

またはのような式はあります=ComputeMD5(A1)=ComputeSHA1(A1)

または、これにカスタム式を書くことは可能ですか? どのように?

4

9 に答える 9

112

Tools > Script Editor次のコードを開いて貼り付けます。

function MD5 (input) {
  var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, input);
  var txtHash = '';
  for (i = 0; i < rawHash.length; i++) {
    var hashVal = rawHash[i];
    if (hashVal < 0) {
      hashVal += 256;
    }
    if (hashVal.toString(16).length == 1) {
      txtHash += '0';
    }
    txtHash += hashVal.toString(16);
  }
  return txtHash;
}

その後、スクリプトを保存しMD5()、セルを参照しながらスプレッドシートで関数を使用します。

このスクリプトは、 Utilities.computeDigest()関数に基づいています。

于 2012-08-08T15:36:26.067 に答える
6

はい、わかった、

http://code.google.com/googleapps/appsscript/articles/custom_function.htmlで説明されているように、カスタム関数を作成する必要があり ます

そして、 http: //code.google.com/googleapps/appsscript/service_utilities.html で説明されているように API を使用します。

セルで結果を確認できるように、完全な関数名を手入力する必要があります。

以下は、base 64 でエンコードされたテキストのハッシュを提供するコードのサンプルです。

function getBase64EncodedMD5(text)
{ 
  return Utilities.base64Encode( Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, text));
}
于 2011-11-04T14:08:26.467 に答える
2

セルの範囲のハッシュを取得するには、これを gabhubert の関数の隣に追加します。

function RangeGetMD5Hash(input) {
  if (input.map) {            // Test whether input is an array.
    return input.map(GetMD5Hash); // Recurse over array if so.
  } else {
    return GetMD5Hash(input)
  }
}

次のようにセルで使用します。

=RangeGetMD5Hash(A5:X25)

ソース 1 と同じディメンションの範囲を返します。値は数式でセルから上下に広がります。

これは汎用の単一値関数から範囲関数への変換方法 ( ref ) であり、セルごとに個別の数式を使用するよりもはるかに高速です。この形式では、単一セルでも機能するため、ソース関数をこのように書き直す価値があるかもしれません。

于 2014-12-31T08:04:59.720 に答える
1

セルの範囲全体でハッシュを取得する必要があったため、次のように実行します。

function RangeSHA256(input)
{
    return Array.isArray(input) ?
        input.map(row => row.map(cell => SHA256(cell))) :
        SHA256(input);
}

于 2020-09-22T06:47:37.457 に答える