特定のセル内のテキストの MD5 または SHA1 ハッシュを計算し、それを Google スプレッドシートの別のセルに設定するにはどうすればよいですか?
またはのような式はあります=ComputeMD5(A1)
か=ComputeSHA1(A1)
?
または、これにカスタム式を書くことは可能ですか? どのように?
特定のセル内のテキストの MD5 または SHA1 ハッシュを計算し、それを Google スプレッドシートの別のセルに設定するにはどうすればよいですか?
またはのような式はあります=ComputeMD5(A1)
か=ComputeSHA1(A1)
?
または、これにカスタム式を書くことは可能ですか? どのように?
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()関数に基づいています。
はい、わかった、
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));
}
セルの範囲のハッシュを取得するには、これを 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 ) であり、セルごとに個別の数式を使用するよりもはるかに高速です。この形式では、単一セルでも機能するため、ソース関数をこのように書き直す価値があるかもしれません。
セルの範囲全体でハッシュを取得する必要があったため、次のように実行します。
function RangeSHA256(input)
{
return Array.isArray(input) ?
input.map(row => row.map(cell => SHA256(cell))) :
SHA256(input);
}