質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

2回答

2052閲覧

スプレッドシートで翻訳したときの結果取得方法について

seio

総合スコア11

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2017/12/21 03:12

コード ```###前提・実現したいこと Googleスプレッドシートで日本語>英語、日本語>中国語の 翻訳後、抽出したい。日本語・英語・中国語 を3列でそのまま抽出したいです。 ###発生している問題・エラーメッセージ 関数で翻訳した後、csvにすると列も崩れ、さらに、文字化けします。 まずはこの方法で取得できるほうほうが知りたいです。(1) それから、もうひとつは、LanguageApp.translate で下記のコードで取得する方法ですが、 指定したセル全てから抽出するソースを教えてください。(2) ###該当のソースコード function onEdit() { var sheet = SpreadsheetApp.getActiveSheet(); var val = sheet.getActiveCell().getValue(); var set = LanguageApp.translate(val, "ja", "en"); sheet.getActiveCell().setValue(set); } ###試したこと 上記のソースでは、1セル分しか翻訳されないため、 指定した範囲のセル全てを翻訳したいです。 ###補足情報(言語/FW/ツール等のバージョンなど) より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

たとえばこんな感じですかね。

A列に入力された日本語をまとめて複数範囲コピーし、B列に貼りつけると中国語に変わると思います。パフォーマンスは分かりませんが。

gs

1function onEdit(e) { 2 var sheet = SpreadsheetApp.getActiveSheet(); 3 var sh = SpreadsheetApp.getActiveSheet(); 4 var row = e.range.getRow(); 5 var col = e.range.getColumn(); 6 if (col === 2) { 7 var val = e.range.getValues(); 8 var num = val.length; 9 var val2 = []; 10 for (var i=0; i<num; i++) { 11 val2.push([LanguageApp.translate(val[i], "ja", "zh")]); 12 } 13 sheet.getRange(row,col,num,1).setValues(val2); 14 } 15}

投稿2017/12/25 09:49

true

総合スコア440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seio

2018/01/10 11:13

ご回答ありがとうございます。お返事が遅くなりすみません。 実行すると、、、 TypeError: undefined からプロパティ「range」を読み取れません。(行 4、ファイル「コード」) と表示されてしまいます。var row = e.range.getRow();のあたりでエラーです。どうすればよいでしょうか。
seio

2018/01/10 11:17

できました!!これの英語版はzhをenにすればよいでしょうか!!
true

2018/01/10 11:36

そうですね。もう試されているとは思いますが(苦笑)
guest

0

文字化けはutf-8をshift_jisで開こうとしているからだと思います。Excelなどで開こうとすると文字化けになります。コードはExcelなどのshift_jis系のやつで開くことを前提に、utf-8をshift_jisに変換しています。

A列に日本語が並んでいると仮定しています。

function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var lr = sheet.getLastRow();
var val = sheet.getRange(1,1,lr,1).getValues();
var str = "";
for (var i=0; i<val.length; i++) {
str += val[i] + "," + LanguageApp.translate(val[i], "ja", "en") + "," + LanguageApp.translate(val[i], "ja", "zh") + "\n";
}
var blob = Utilities.newBlob("", MimeType.CSV, "test");
blob.setDataFromString(str,"shift_JIS");
DriveApp.createFile(blob);
}
「test」というファイルが生成されていると思うのでそれをダウンロードしてローカルで開いてみてください。

投稿2017/12/21 11:50

true

総合スコア440

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

seio

2017/12/25 02:56

ご回答ありがとうございます。文字化けはどのように解決できますでしょうか。また、コードをスクリプトエディタに貼り付けてみましたが、testというファイルは生成されませんでした・・・  function onEdit() { var sheet = SpreadsheetApp.getActiveSheet(); var val = sheet.getActiveCell().getValue(); var set = LanguageApp.translate(val, "ja", "en"); sheet.getActiveCell().setValue(set); } 上記コードを少し変えて、全ての指定したセルを隣のセルにコピペしたら 自動的に翻訳されるようにできないでしょうか。上記コードでは、コピペした1セル分の 翻訳しか自動で翻訳されませんので、とても手間がかかります。例えば、A列の原文(JP)をB列に全てコピペしたら、B列全てが中国語となるようにしたいです。よろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問