B列の英語をC列に日本語として翻訳
=IF(B2="","",GOOGLETRANSLATE(B2,"en","ja"))
B列の日本語をC列に英語として翻訳
=IF(B2="","",GOOGLETRANSLATE(B2,"ja","en"))
下記はC列の関数を値化してD列にいれるためのスクリプト
/***** 設定:対象タブ名(そのまま書いてOK)*****/
const SHEET_NAMES = ['シートName1', 'Name2', 'Name3'];
const SOURCE_COL = 3; // C列(読み取り)
const TARGET_COL = 4; // D列(書き込み)
const HEADER_ROW = 1; // 見出し行
// タブ名の揺れを吸収(全角/半角・前後空白)
function _normalizeName_(s){ return String(s).normalize('NFKC').trim(); }
function _isTargetSheet_(name){
const n = _normalizeName_(name);
return SHEET_NAMES.map(x=>_normalizeName_(x)).includes(n);
}
function onEdit(e){
if (!e) return; // ▶実行では動かさない
const sh = e.range.getSheet();
if (!_isTargetSheet_(sh.getName())) return;
const startRow = e.range.getRow();
const numRows = e.range.getNumRows();
const col = e.range.getColumn();
if (startRow <= HEADER_ROW) return; // 見出しは無視
if (col === SOURCE_COL) return; // C直編集は式保護のため何もしない
SpreadsheetApp.flush(); // Cの再計算待ち
const src = sh.getRange(startRow, SOURCE_COL, numRows, 1).getDisplayValues();
const out = src.map(r => [r[0] || ""]);
sh.getRange(startRow, TARGET_COL, numRows, 1).setValues(out);
}
// 既存分を一括同期(必要な時だけ手動で▶実行)
function copyAll_forAllSheets(){
const ss = SpreadsheetApp.getActive();
SHEET_NAMES.forEach(name=>{
const sh = ss.getSheetByName(name);
if (!sh) return;
const last = sh.getLastRow();
if (last <= HEADER_ROW) return;
SpreadsheetApp.flush();
const rows = last - HEADER_ROW;
const src = sh.getRange(HEADER_ROW+1, SOURCE_COL, rows, 1).getDisplayValues();
sh.getRange(HEADER_ROW+1, TARGET_COL, rows, 1).setValues(src.map(r=>[r[0] || ""]));
});
}