前提・実現したいこと
サイトバーにて、選択ボックスでタイトルを選択し、それに応じて各タイトルの辞書を選択して文章作成スペースの内容を翻訳するコードを作成したいです。
どこに問題があるか分からないですが、翻訳を行えないまま、文章作成スペースの内容が翻訳スペースに出力されるようになっています。
ご教授いただければ幸いです。
該当のソースコード
サイトバーを表示
gas
1//MainController.gs 2function showSidebar() { 3 var htmlOutput = HtmlService.createTemplateFromFile('index').evaluate(); 4 SpreadsheetApp.getUi().showSidebar(htmlOutput);
GASの関数
gas
1//code.gs 2function Translate(Title,Sentence) { 3 4const Translate = (Title,Sentence) => { 5 const dictionary = SpreadsheetApp.getActive().getSheetByName("dict").getDataRange().getValues(); 6 const pattern = { 7 "タイトルA":{key:0,value:1}, 8 "タイトルB":{key:2,value:3}, 9 "タイトルC":{key:4,value:5}, 10 "タイトルD":{key:6,value:7}, 11 }; 12 const conf = pattern[Title]; 13 if (!conf) return `${Sentence} 不正なタイトル`; 14 const dic = dictionary.filter(e=>e[conf["key"]] !== "").map(e=>[RegExp(e[conf["key"]],'g'),e[conf["value"]]]); 15 return dic.reduce((a,c) => a.replace(c[0],c[1]),Sentence); 16} 17 18const showSidebar = () => { 19 SpreadsheetApp.getUi().showSidebar(HtmlService.createTemplateFromFile('index').evaluate()); 20} 21}
サイトバーのコード
html
1//index.html 2<!DOCTYPE html> 3<html> 4<head> 5 <base target="_top"> 6 <meta charset="UTF-8"> 7 <?!= HtmlService.createHtmlOutputFromFile('css').getContent(); ?> 8</head> 9<body> 10<div> 11 <textarea id = "WritingArea" rows="8" cols="25" placeholder="文章作成用スペース"></textarea> 12</div> 13<div> 14 <textarea id = "TranslateArea" rows="8" cols="25" placeholder="翻訳用スペース"></textarea> 15 <textarea id = "TitleValue" rows="1" cols="10" placeholder="タイトルを選択"></textarea> 16</div> 17<div> 18 <select id="TitleList" size="4" onchange="javascript:GetTitleText()"> 19 <option>タイトルA</option> 20 <option>タイトルB</option> 21 <option>タイトルC</option> 22 <option>タイトルD</option> 23 </select> 24</div> 25<div style="text-align:center;"> 26 <input type="button" class="blue" value="翻訳" onclick="javascript:TranslateSentence();"> 27</div> 28<?!= HtmlService.createHtmlOutputFromFile('js').getContent(); ?> 29</body> 30</html>
CSS
HTML
1//css.html 2<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
サイトバーで使う関数
js
1//js.html 2 3<script> 4function GetTitleText(){ 5var TitleElement = document.getElementById("TitleList"); 6var result = TitleElement.options[TitleElement.selectedIndex].text; 7document.getElementById("TitleValue").innerHTML = result; 8} 9 10 11function TranslateSentence(){ 12const TranslateSentence = () => { 13 const TitleValue=document.getElementById("TitleValue").value; 14 const WriteValue=document.getElementById("WritingArea").value; 15 16 google.script.run.withSuccessHandler(Translated => { 17 document.getElementById("TranslateArea").value =Translated; 18 }).Translate(TitleValue,WriteValue); 19 } 20 const GetTitleText = () => { 21 document.getElementById("TitleValue").value = document.getElementById("TitleList").value; 22 } 23 } 24 25</script> 26
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/25 10:14
2020/02/25 22:42
2020/02/26 02:24
2020/02/26 08:53
2020/02/27 07:05