前提・実現したいこと
多言語化の実装にあたり、スプレッドシートにてテキストの管理を行いたいと思っていたのですが、
その際にしていしたパターンで出力したいのですが実現できずにお力を貸していただきたいです。
今回想定しているスプレッドシートは添付画像にて
「日本語・英語・中国語」の3つの言語を扱います。
json
1[ 2 { 3 "id_01": "タイトル", 4 "id_02": "テキスト" 5 } 6]
上記のような形で出力(**id_??**の部分は固定でタイトルやテキストの部分をJSON出力の際に指定の言語を選んで分けたいと考えております。)
現在の出力
json
1[ 2 { 3 "id_01,id_02,id_03,id_04,id_05...": "タイトル", 4 "id_01,id_02,id_03,id_04,id_05...": "テキスト" 5 } 6]
該当のソースコード
gs
1//ダウンロードダイヤログ表示 2function toJSON() { 3 var dl_html = HtmlService.createTemplateFromFile("dl_dialog").evaluate(); 4 SpreadsheetApp.getUi().showModalDialog(dl_html, "JSONファイルをダウンロード"); 5} 6 7//データ取得 8function getData_Ja() { 9 var sheet = SpreadsheetApp.getActiveSheet(); 10 var maxRow = sheet.getLastRow(); 11 var maxColumn = sheet.getLastColumn(); 12 var keys = []; 13 var data = []; 14 15 //keysデータ格納配列 16 for (var x = 2; x <= maxRow; x++) { 17 keys.push(sheet.getRange(x, 1).getValue()); 18 } 19 20 //JSONデータ格納配列 21 for (var y = 2; y <= maxRow; y++) { 22 var json = {}; 23 json[keys] = sheet.getRange(y, 2).getValue(); 24 25 //データ格納 26 data.push(json); 27 } 28 29 //整形してテキストにします 30 return JSON.stringify(data, null, '\t'); 31} 32 33//スプレッドシート読み込み時に実行 34function onOpen() { 35 //メニューバーにJSON出力用メニューを追加 36 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 37 var entries = [{ 38 name : "JSONで出力", 39 functionName : "toJSON" 40 }]; 41 spreadsheet.addMenu("JSON", entries); 42};
html
1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <script type='text/javascript'> 6 //ダウンロード実行 7 function handleDownload_Ja() { 8 //JSONデータの取得 9 var content = <?= getData_Ja(); ?>; 10 //ダウンロード用URL生成 11 var blob = new Blob([ content ], { "type" : "application/json"}); 12 document.getElementById("download_ja").href = window.URL.createObjectURL(blob); 13 } 14 </script> 15 </head> 16 <body> 17 <!-- JSONダウンロードボタン:json名は適宜設定してください--> 18 <a id="download_ja" href="#" download="top_Ja.json" onclick="handleDownload_Ja()">日本語ダウンロード</a> 19 <a id="download_en" href="#" download="top_En.json" onclick="handleDownload_En()">英語ダウンロード</a> 20 <a id="download_ch" href="#" download="top_Ch.json" onclick="handleDownload_Ch()">中国語ダウンロード</a> 21 </body> 22 <style> 23 a { 24 display: block; 25 color: #000; 26 line-height: 2; 27 } 28 </style> 29</html>
試したこと
toJSON()にてダイヤログを読み込ませ、ダイアログのテンプレートを作成しているhtmlで言語の選択をするようにしたいと考えていました。
そのため現在は日本語ようの関数しか用意しておりません。。
javascriptの知識や配列に対しての知識がまだまだ未熟でうまくできずにおります。
よろしくお願い致します
参考サイト
https://kuwk.jp/blog/spreadsheet2json/
https://qiita.com/cazimayaa/items/224daebe536799e5a8a2
https://tech-cci.io/archives/1377
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/23 11:29
2020/09/23 14:03
2020/09/24 04:27