在Google电子表格中散列单元格文本列表

时间:2016-05-25 10:43:42

标签: excel google-sheets

如何在单元格列表中计算文本的MD5或SHA1哈希值?例如,我在列A行1-100中有100个电子邮件地址,我希望将它们全部加密。我想在每个解密的电子邮件地址旁边的B列中编写加密的电子邮件。这样做的最佳方式是什么?

我已阅读answer here,但它并不完全正常

我对谷歌电子表格的经验很少: - (

我开始使用此脚本,但一次只能加密一封电子邮件

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;
}

2 个答案:

答案 0 :(得分:2)

像你一样定义MD5函数,然后在B1 put:

=arrayformula(MD5(A1:A100))

答案 1 :(得分:0)

如果你在下面添加以下函数然后运行straightToText()就可以了

function straightToText() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var r = 1;
  var n_rows = 9999;
  var n_cols = 1;
  var column = 1;
  var sheet = ss[0].getRange(r, column, n_rows, ncols).getValues(); // get first sheet, a1:a9999
  var results = [];
  for (var i = 0; i < sheet.length; i++) {
    var hashmd5= GetMD5Hash(sheet[i][0]);
    results.push(hashmd5);
  }
  var dest_col = 3;
  for (var j = 0; j < results.length; j++) {
    var row = j+1;
    ss[0].getRange(row, dest_col).setValue(results[j]);  // write output to c1:c9999 as text
  }  
}