스프레드시트에서 json 만들기
하고 싶은 일
스프레드 시트에서 json을 만들고 싶습니다.
제목을 키로 만드는 패턴과
{id:001, name=aaa, flg=true},{id:002, name=bbb, flg=false}
id를 key로 하고 그 안에 제목을 key로 하는 패턴을 이번에는 만든다.{001:{name=aaa, flg=true},002:{name=bbb, flg=false}}
스프레드시트에서 gas를 작성하려면
아래 그림과 같이 스프레드 시트를 준비하고 첫 번째 줄에서 찾은 다음 두 번째 줄 이후에 데이터를 적절하게 입력합니다.
그런 다음 도구> 스크립트 편집기를 클릭하면 별도의 창에서 apps script의 웹 편집기가 나타납니다.
여기에서 새로운 gas 파일과 html 파일을 추가합니다.
gas 및 html 준비
gas 편집기를 열면 이미 "코드 .gs"의 gas 파일이 존재합니다.
코드 .gs 파일을 원하는 이름으로 변환하고 다음 소스 코드를 붙여 넣습니다.
//ダウンロードダイヤログ表示
function toJSON() {
/* 実行結果イメージ
[
{flg=true, name=google, id=A001, url=https://www.google.com/},
{flg=true, name=yahoo, id=A002, url=https://www.yahoo.co.jp/},
{flg=false, name=aaaa, id=B001, url=https://www.aaaaaa}
]
*/
//ダイヤログテンプレート読み込み
var dl_html = HtmlService.createTemplateFromFile("dl").evaluate();
//ダイヤログ表示
SpreadsheetApp.getUi().showModalDialog(dl_html, "JSONファイルをダウンロード");
}
//データ取得
function getData() {
//データ取得するシート(現在開いているシートを指定)
var sheet = SpreadsheetApp.getActiveSheet();
//行(横軸)と列(縦軸)の最大数を取得
var maxRow = sheet.getLastRow();
var maxColumn = sheet.getLastColumn();
//JSON用のkey
var keys = [];
//データ格納配列
var data = [];
// ★ここから
//1行目のkeyの名前取得 keyの行を変更したい場合はxと引数を変更
//JSON用のラベルは1行目で指定しているため【getRange】の第1引数は【1】
for (var x = 1; x <= maxColumn; x++) {
keys.push(sheet.getRange(1, x).getValue());
}
//データの取得
//実際のデータが2行目からなので【y = 2】から開始
for (var y = 2; y <= maxRow; y++) {
// var json_shop_id = {};
var json = {};
for (var x = 1; x <= maxColumn; x++) {
json[keys[x-1]] = sheet.getRange(y, x).getValue();
}
//データ格納
data.push(json);
Logger.log(data);
}
//整形してテキストにします
return JSON.stringify(data, null, '\t'); // ★ここまで
}
//スプレッドシート読み込み時に実行
function onOpen() {
//メニューバーにJSON出力用メニューを追加
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "JSONで出力",
functionName : "toJSON"
}];
spreadsheet.addMenu("JSON", entries);
};
그런 다음 다운로드를위한 화면을 만들기 위해 새로 HTML 파일을 준비합니다.
html 파일의 이름은 무엇이든 좋지만 위의 12 행에서 dl 파일을 읽고 있기 때문에 이번에는 dl.html을 만들고 다음 소스를 붙여 넣습니다.
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script type='text/javascript'>
//ダウンロード実行
function handleDownload() {
//JSONデータの取得
var content = <?= getData(); ?>;
//ダウンロード用URL生成
var blob = new Blob([content], { "type": "application/json" });
document.getElementById("download").href = window.URL.createObjectURL(blob);
}
</script>
</head>
<body>
<!-- JSONダウンロードボタン:json名は適宜設定してください-->
<a id="download" href="#" download="download_file.json" onclick="handleDownload()">ダウンロード</a>
</body>
</html>
파일 실행
위의 파일이 준비되면 스프레드 시트로 돌아가서 실행하십시오.
JSON>JSON로 출력으로부터 실행한다 ※첫회 실행은, 인증이 필요하게 되므로 허가한다.
다운로드에서 json을 다운로드하면,
[
{
"id": "A001",
"name": "google",
"flg": false,
"url": "https://www.google.com/"
},
{
"id": "A002",
"name": "yahoo",
"flg": true,
"url": "https://www.yahoo.co.jp/"
},
{
"id": "B001",
"name": "aaaa",
"flg": false,
"url": "https://www.aaaa.co.jp/"
}
]
json 파일을 다운로드할 수 있다.
ID를 키로 만드는 패턴
gas에 붙인 소스의 「★여기에서」「★여기까지」를 아래와 같이 수정
// ★ここから
//1行目のkeyの名前取得 keyの行を変更したい場合はxと引数を変更
//JSON用のラベルは2行目で指定しているため【getRange】の第1引数は【1】
for (var x = 1; x <= maxColumn; x++) {
keys.push(sheet.getRange(1, x).getValue());
}
//データの取得
//実際のデータが2行目からなので【y = 2】から開始
for (var y = 2; y <= maxRow; y++) {
var json = {};
for (var x = 2; x <= maxColumn; x++) {
json[keys[x-1]] = sheet.getRange(y, x).getValue();
}
//データ格納
var id = sheet.getRange(y, 1).getValue();
data[id] = json;
}
Logger.log(data);
//整形してテキストにします
return JSON.stringify(data, null, '\t'); // ★ここまで
그러면 id를 key로 한 json을 만들 수 있습니다.
/* jsonの形
{
"A001": {
"name": "google",
"flg": true,
"url": "https://www.google.com/"
},
"A002": {
"name": "yahoo",
"flg": true,
"url": "https://www.yahoo.co.jp/"
},
"B001": {
"name": "aaa",
"flg": false,
"url": "https://www.aaaaaa"
}
}
*/
소스 코드는 다음 git에 있습니다.
htps : // 기주 b. 코 m / 미나미 - 373 / 오테 r_ 코데
참고
htps : // / wk. jp/bぉg/sp레아 d시에 t2j
Reference
이 문제에 관하여(스프레드시트에서 json 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yami_37/items/b4ed2bd2e20ffe7dfbca텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)