左のテキストエリアで改行を1つ入れると
右のテキストエリアに日→英でGoogle翻訳した値が自動で入り
A列 B列に値が入力される

テキストエリアで改行を2つ入れると
次の行へ移動する
Code.gs /************************************ メニューに追加する ************************************/ function onOpen() { SpreadsheetApp.getUi() .createMenu('SCRIPT') .addItem('GUI', 'openGUI') .addToUi(); } /************************************ UIを表示する ************************************/ function openGUI() { var html = HtmlService.createHtmlOutputFromFile('index') .setSandboxMode(HtmlService.SandboxMode.IFRAME); SpreadsheetApp.getUi() .showModalDialog(html, 'myGUI'); } /************************************ アクティブセルまでをグローバル化する ************************************/ var ss = SpreadsheetApp.getActive(); var sh = ss.getActiveSheet(); var range = sh.getActiveRange(); /************************************ アクティブ行の値を取得して返す ************************************/ function get_active_values(){ var row = range.getRow(); var value = sh.getRange(row+":"+row).getValues(); return value; } /************************************ 値をアクティブ行のA列に入れて 日→英でGoogle翻訳した値をB列に入れて その値を返す ************************************/ function set_active_value(value){ var row = range.getRow(); sh.getRange('A'+row).setValue(value.trim()); var value = LanguageApp.translate(value, 'ja', 'en'); sh.getRange('B'+row).setValue(value.trim()); return value; } /************************************ 値をアクティブ行のB列に入れる ************************************/ function set_active_value2(value){ var row = range.getRow(); sh.getRange('B'+row).setValue(value.trim()); } /************************************ 上の行をアクティブにして値を取得して返す ************************************/ function get_prev_values(){ var col = range.getColumn(); var row = range.getRow()-1; sh.getRange(row , col).activate(); var value = sh.getRange(row+":"+row).getValues(); return value; } /************************************ 下の行をアクティブにして値を取得して返す ************************************/ function get_next_values(){ var col = range.getColumn(); var row = range.getRow()+1; sh.getRange(row , col).activate(); var value = sh.getRange(row+":"+row).getValues(); return value; }
index.html <!--/******************************** HTML ********************************/--> <textarea id="ta" onkeyup="input_keyup(event)"></textarea> <textarea id="ta2" onkeyup="input_keyup2(event)"></textarea> <br> <input type="button" id="prev" value="prev" onclick="prev_bt()"> <input type="button" id="next" value="next" onclick="next_bt()"> <input type="button" id="submit" value="submit" onclick="run_input()"> <!--/******************************** JavaScript ********************************/--> <script> //UI起動時に実行するfunction load_active_value(); /******************************** load_active_value ********************************/ function load_active_value(){ google.script.run.withSuccessHandler(to_ta) .withUserObject(this) .get_active_values(); } function to_ta(value){//Code.gsのget_active_values()からvalueを受け取る var value_split = value.toString().split(",");//受け取ったvalueを配列にする document.getElementById("ta").value=value_split[0];//taに配列の0番目を入れる document.getElementById("ta2").value=value_split[1];//ta2に配列の1番目を入れる document.getElementById("ta").focus();//taにフォーカスを移動する } /******************************** input_keyup ********************************/ //確定キーでrun_input();を実行する function input_keyup(event) { var kc = event.keyCode; var value = document.getElementById("ta").value; var value_split = value.split("\n"); if(kc==13){ if(value_split[value_split.length-2]==""){//改行2つなら run_input(); next_bt(); //document.getElementById("ta2").focus();//次の行へ行かずta2にフォーカスを移動する }else if(value_split[value_split.length-1]==""){//改行1つなら run_input(); } } } /******************************** run_input ********************************/ //taの値をCode.gsのset_active_value(value)に渡して実行して //translate_valueを実行する function run_input(value){ var value = document.getElementById("ta").value; google.script.run.withSuccessHandler(translate_value) .withUserObject(this) .set_active_value(value); } /******************************** translate_value ********************************/ //set_active_value(value)で返ってきたvalueを受け取る function translate_value(value){ document.getElementById("ta2").value = value; } /******************************** input_keyup2 ********************************/ //確定キーでrun_input2();を実行する function input_keyup2(event) { var kc = event.keyCode; var value = document.getElementById("ta2").value; var value_split = value.split("\n"); if(kc==13){ if(value_split[value_split.length-2]==""){//改行2つなら run_input2(); next_bt(); }else if(value_split[value_split.length-1]==""){//改行1つなら run_input2(); } } } /******************************** run_input2 ********************************/ //ta2の値をCode.gsのset_active_value2(value)に渡して実行する function run_input2(){ var value = document.getElementById("ta2").value; google.script.run.withUserObject(this).set_active_value2(value); } /******************************** prev_bt ********************************/ function prev_bt(){ google.script.run.withSuccessHandler(prev_fnc) .withUserObject(this) .get_prev_values(); } function prev_fnc(value){//Code.gsのget_prev_values()からvalueを受け取る var value_split = value.toString().split(",");//受け取ったvalueを配列にする document.getElementById("ta").value=value_split[0];//taに配列の0番目を入れる document.getElementById("ta2").value=value_split[1];//ta2に配列の1番目を入れる document.getElementById("ta").focus();//taにフォーカスを移動する } /******************************** next_bt ********************************/ function next_bt(){ google.script.run.withSuccessHandler(next_fnc) .withUserObject(this) .get_next_values(); } function next_fnc(value){//Code.gsのget_next_values()からvalueを受け取る var value_split = value.toString().split(",");//受け取ったvalueを配列にする document.getElementById("ta").value=value_split[0];//taに配列の0番目を入れる document.getElementById("ta2").value=value_split[1];//ta2に配列の1番目を入れる document.getElementById("ta").focus();//taにフォーカスを移動する } </script>