今回やりたいこと
スプレッドシートのA列に入力されている英語を日本語に翻訳してB列に入れたい
シートのA列の英語をB列に日本語翻訳したい(一気にやる)
ではB列の値すべてを一気に翻訳しました
今回は
B列に入力されている値の最終行を取得してその次の行から翻訳してみる
実行前
実行後
サンプルデータ
コード2.gsvar sourceLang = '';// 翻訳元の言語を空にしておくと自動判定してくれる
var targetLang = 'ja';// この言語に翻訳する 言語の種類は→https://cloud.google.com/translate/docs/languages
var sourceCol = 1;// 値を取得する列
var targetCol = 2;// 書き込む列
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var lastRow = sheet.getLastRow();
var lastRowB = getLastRowAt(sheet, targetCol);
var startRow = lastRowB + 1
var numRows = lastRow - lastRowB;
var resultArray = [];
var range = sheet.getRange(startRow, sourceCol, numRows, 1);
var values = range.getDisplayValues();
values = arrayPushApply(values);
values = values.filter(function(value) { return value !== ''; });
setTranslated(sheet, startRow, values);
}
function setTranslated(sheet, startRow, resultArray) {
var translateds = [];
for(var i = 0; i < resultArray.length; i++) {
var value = resultArray[i];
var translated = LanguageApp.translate(value, sourceLang, targetLang);
translateds.push([translated])
}
var range = sheet.getRange(startRow, targetCol, translateds.length, 1);
range.setValues(translateds);
}
//二次元配列を一次元配列にして返す
function arrayPushApply(array){
for(var i = 1; i < array.length; i++){
Array.prototype.push.apply(array[0], array[i]);
}
return array[0]
}
function getLastRowAt(sheet, col) {
var start_row = 1;
var num_cols = 1;
var sh_last_row = sheet.getLastRow();
var values = sheet.getRange(start_row, col, sh_last_row, num_cols).getValues();
for (var i = values.length - 1; i >= 0; i--) {
if (values[i] != "") {
break;
}
}
var last_row = i + 1;
return last_row;
}
|
関連記事
シートのA列の英語をB列に日本語翻訳したい(一気にやる)

