Google Apps 脚本 - 在数组公式中将单元格转换为 SHA256
Google Apps Script - Convert cell to SHA256 within an Array Formula
我编写了一个简单的脚本来散列单元格,但是它在数组公式中不起作用,我很难弄清楚如何添加该功能。
function SHA256 (input) {
var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, 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;
}
在 Google 表格中,上面的脚本允许我使用 SHA526(A2)
进行散列
我希望能够通过在数组公式中使用 SHA256() 来散列整个列。 =ArrayFormula(SHA256(A2:A))
我得到的错误是
"Exception: The parameters (DigestAlgorithm,number[]) don't match the method signature for Utilities.computeDigest. (line 2)."
任何方向将不胜感激!
Google Apps Script - Custom Functions Documentation
为了使用数组,您需要映射输入。使用简单的 else if 可以测试输入是数组还是单个值。
function SHA256 (input) {
if(input.map) {
return input.map(SHA256);
} else {
var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, 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;
}
}
我编写了一个简单的脚本来散列单元格,但是它在数组公式中不起作用,我很难弄清楚如何添加该功能。
function SHA256 (input) {
var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, 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;
}
在 Google 表格中,上面的脚本允许我使用 SHA526(A2)
进行散列我希望能够通过在数组公式中使用 SHA256() 来散列整个列。 =ArrayFormula(SHA256(A2:A))
我得到的错误是
"Exception: The parameters (DigestAlgorithm,number[]) don't match the method signature for Utilities.computeDigest. (line 2)."
任何方向将不胜感激!
Google Apps Script - Custom Functions Documentation
为了使用数组,您需要映射输入。使用简单的 else if 可以测试输入是数组还是单个值。
function SHA256 (input) {
if(input.map) {
return input.map(SHA256);
} else {
var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.SHA_256, 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;
}
}