#もの
https://sites.google.com/view/translatepaper/home/%E7%BF%BB%E8%A8%B3
※なお、テストは十分に行われておりません。
#モチベーション
論文を読むときに媒体がPDFだと文末の-(ハイフン)とか改行があってそのままだとGoogle翻訳にかからない。
めんどいからそこらへん自動で除去りたい。
先人がやってるけどこのツールとGoogle翻訳で二回コピペするのがめんどいね。
じゃあ翻訳までやってくれるものつっくろ。
以上
あとGoogleAppScriptの勉強
#残念な点
- Form投稿+ユーザID入力ボタン押下って2ステップ必要なこと(回避方法がわからなかった)
- Google Form使ってやるのは勝手ハイフンとか改行とか整形してくれて楽だったんだけど、そのせいでスプレッドシートに情報が蓄積されちゃう(有料の論文とか問題かも)
何か良い回避方法があったら教えてください
#仕組み(殴り書き)
GoogleFormで回答
GoogleFormからの情報をスプレッドシートに登録
自作Formのボタンを押すことで、スプレッドシートからのデータに対してLanguageApp.translate()が動いて翻訳される
var japanese = LanguageApp.translate(data, 'en', 'ja');
翻訳されたデータをあらかじめ作っておいたテンプレートに当てはめてHTMLファイルとして出力する
var template = HtmlService.createTemplateFromFile('temp_result');
template.before = data;
template.after = japanese;
return template.evaluate()
#コード全体
translatepaper.gs
function doGet(e) {
var sheet = SpreadsheetApp.getActiveSheet();
Logger.log(SpreadsheetApp.getActiveSheet().getName());
var row = sheet.getLastRow();
var userID = e.parameter.name
if (userID != null){
Logger.log(userID);
while (row > 1){
if( userID == sheet.getRange(row,3).getValue() ){
break;
}
else {
row = row - 1;
}
}
}
if(row == 1){
var data = 'The specified user ID does not exist.';
}
else {
var data = sheet.getRange(row,2).getValue();
}
Logger.log(data);
var japanese = LanguageApp.translate(data, 'en', 'ja');
Logger.log(japanese);
sheet.getRange(row,4).setValue(japanese);
var template = HtmlService.createTemplateFromFile('temp_result');
template.before = data;
template.after = japanese;
return template.evaluate()
}
temp_result.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<div>
<div>
<p>翻訳前</p>
<p>
<?= before ?>
</p>
</div>
<div>
<p>翻訳後</p>
<p>
<?= after ?>
</p>
</div>
</div>
</body>
</html>
#最後に
- 今回省略できたハイフンとか改行の処理を自分でやることになるかもしれないけど、GoogleFormを使わないって選択肢をとれば、残念な点二つとも回避できそう
- ちなみにハイフンとか改行の処理はなんとGoogleFormにコピペした時点でしてくれてます!(多分)