Skip to content

Instantly share code, notes, and snippets.

@houkanshan
Last active May 13, 2020 03:45
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save houkanshan/48ee667a281efd5c6f5045fdc273e81f to your computer and use it in GitHub Desktop.
Save houkanshan/48ee667a281efd5c6f5045fdc273e81f to your computer and use it in GitHub Desktop.
function MD5 (input) {
var rawHash = Utilities.computeDigest(Utilities.DigestAlgorithm.MD5, input, Utilities.Charset.UTF_8);
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 youdaoTrans(query) {
if (!query) { return ''; }
var cache = CacheService.getScriptCache();
var cached = cache.get(query);
//Logger.log(cached);
if (cached != null) { return cached; }
var key = '有道翻译-应用id';
var secret = '有道翻译-应用密钥';
var salt = 2;
var sign = MD5(key+query+salt+secret);
//Logger.log("https://openapi.youdao.com/api?from=EN&to=zh_CHS&q=" + query + '&appKey=' + key + '&salt=2&sign=' + sign);
var response = UrlFetchApp.fetch("https://openapi.youdao.com/api?from=EN&to=zh_CHS&q=" + query + '&appKey=' + key + '&salt=2&sign=' + sign);
var res = JSON.parse(response.getContentText());
var ret = ''
if (res.basic) {
ret = '[' + res.basic['uk-phonetic'] + '] [' + res.basic['us-phonetic'] + '] '
ret += res.basic.explains.join('; ');
if (query !== res.query) {
ret = res.query + ' ' + ret;
}
} else {
ret = res.translation.join('; ')
}
cache.put(query, ret, 21600);
return ret;
}
function freeze() {
var sh = SpreadsheetApp.getActiveSheet();
var range = sh.getActiveRange()
var shval = range.setValues(range.getValues());
}
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.addMenu("助手", [{
name: '锁定选区翻译结果',
functionName: 'freeze',
}]);
}
@zizihu
Copy link

zizihu commented Dec 7, 2019

楼主还会能更新吗,我提示TypeError: 无法调用 undefined 的方法“join”。(第43行)。求解,文科生哭晕在厕所。

@houkanshan
Copy link
Author

楼主还会能更新吗,我提示TypeError: 无法调用 undefined 的方法“join”。(第43行)。求解,文科生哭晕在厕所。

试了下没有问题哦,你看看是不是

  var key = '有道翻译-应用id';
  var secret = '有道翻译-应用密钥';

这里填错了?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment