LANG SELRCT

Apps Script Reference  (Create: Create new Spreadsheet | Create new Apps Script

Friday, December 27, 2019

シートのA列の英語をB列に日本語翻訳したい(B列最終行の次から)


今回やりたいこと

スプレッドシートのA列に入力されている英語を日本語に翻訳してB列に入れたい

シートのA列の英語をB列に日本語翻訳したい(一気にやる)
ではB列の値すべてを一気に翻訳しました


今回は
B列に入力されている値の最終行を取得してその次の行から翻訳してみる



実行前


実行後



サンプルデータ
englishjapanese
candy
chocolate
gum
caramel
cake
cream puff
chips
pancake
biscuit
pudding
cookie




コード2.gs
var 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列に日本語翻訳したい(一気にやる)

Latest post

スプレッドシートA列にある複数のテキストをスライドに追加したい(Google Apps Script)

今回Google Apps Scriptでやりたいこと GoogleスプレッドシートA列にある複数の値を取得して Googleスライドに渡して 図形オブジェクトのテキストとして追加したい ① スプレッドシートのA列に値を入れておく ② Code.gsのinsertNewShape...