Googleスプレッドシートからjsonファイルの出力する方法
name | age | height |
太郎 | 10 | 130 |
次郎 | 9 | 110 |
三郎 | 8 | 100 |
[
{"name":"太郎","age":10,"height":130},
{"name":"次郎","age":9,"height":110},
{"name":"三郎","age":8,"height":100}
]
「ツール」→「スクリプトエディタ」を選択してスクリプトエディタ画面に移動しコード.gsとdialog.htmlを記述します。
コード.gs
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getDataRange().getValues();
var keys = rows.splice(0,1)[0];
var data = rows.map(function(row) {
var obj = {}
row.map(function(item.index) {
obj[keys[index]] = item;
});
return obj;
});
json = Json.stringify(data);
HtmlService.createTemplateFromFile("dialog").evaluate();
SpreadsheetApp.getUi().showModalDialog(html, "ファイルダウンロード");
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name: "シートをjsonで出力",
functionName: "myFunction"
}];
spreadsheet.addMenu("出力", entries);
}
onOpenはスプレッドシートを開いたときに呼ばれます。addMenuでスプレットシートのメニューを追加します。
addMenuで追加したメニューを選択したらメソッドを呼ぶようにします。
追加したメニューからmyFunctionを呼ぶ処理になります。
dialog.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script type="text/javascript">
function handleDownload() {
var content = "<? json ?>";
var blob = new Blob([content], {"type": "application/json"});
const link = document.getElementById("download");
link.download = "ダウンロードファイル名";
link.href = window.URL.createObjectURL(blob);
return true;
}
</script>
</head>
<a id="download" href="#" onclick="handleDownload()">ダウンロード</a>
<body>
</body>
</html>
<? json ?>はコード.gsのmyFunctionのjson変数が置き換わります。承認設定をする
「承認が必要」とでたら続行を選択してGoogleアカウントを選択します。「このアプリは確認されてません」とでたら詳細を選択して「安全でないページに移動」リンクを選択し次のページで許可ボタンを選択します。
ディスカッション
コメント一覧
まだ、コメントがありません