Google 스프레드시트에서 JSON 출력
12673 단어 GoogleSpreadSheet게임 제작gas
소개
게임에서 사용하는 몬스터의 파라미터를 편집하여 JSON에 출력하고 싶습니다.
하지만 Excel이 없기 때문에 Google 스프레드 시트에서 시도했습니다.
스프레드 시트를 열고 메뉴의 도구 -> 스크립트 편집기에서
Google Apps Script(GAS)라는 JavaScript 기반 언어를 작성할 수 있습니다.
데이터 적으로 이것은
이렇게
방법
스크립트 편집기를 열면 생성 된 매크로 .gs 및
스크립트 편집기 메뉴의 파일 -> 새로 만들기 -> HTML 파일
에서 dialog.html을 만듭니다.
내용은 각각
매크로.gsfunction main() {
var html = HtmlService.createTemplateFromFile("dialog").evaluate();
SpreadsheetApp.getUi().showModalDialog(html, "ファイルダウンロード");
}
function getData() {
var sheet = SpreadsheetApp.getActiveSheet();
var maxRow = sheet.getLastRow();//行数 -
var maxColumn = sheet.getLastColumn();//列数 |
var keys = [];
var ret = [];
//1列目のkeyの名前取得
for (var x = 1; x <= maxColumn; x++) {
keys.push(sheet.getRange(1, x).getValue());
}
//データ
for (var y = 2; y <= maxRow; y++) {
var json = {};
for (var x = 1; x <= maxColumn; x++) {
json[keys[x-1]] = sheet.getRange(y, x).getValue();
}
ret.push(json);
}
//整形してテキストに
return JSON.stringify(ret, null, '\t');
}
function onOpen() {
// メニューバーにカスタムメニューを追加
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "jsonで出力",
functionName : "main"
}];
spreadsheet.addMenu("マクロ", entries);
};
dialog.html<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script type='text/javascript'>
function handleDownload() {
var content = <?= getData(); ?>;
var blob = new Blob([ content ], { "type" : "application/json"});
document.getElementById("download").href = window.URL.createObjectURL(blob);
}
</script>
</head>
<body>
<a id="download" href="#" download="test.json" onclick="handleDownload()">ダウンロード</a>
</body>
</html>
이러한 파일을 만들고 스프레드시트로 돌아가면
메뉴에 매크로라는 항목이 추가되어 있으므로 선택하여 실행합니다.
GAS는 붙어 구이 칼날이므로 작법이 별로 좋지 않을지도…
실패한 방법
파일 출력은 다음과 같은 방법으로 할 수 있다고 했습니다만, 내 환경에서는
Invalid argument: parent.mimeType
그리고 나서 잘 가지 않았다.
이 버그 제대로 쫓지 않습니다 ...
매크로.gsfunction outputJson() {
var sheetfile = "myFileName";
var destfolder = "フォルダのID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder).addFile(file);
var docfile = file.getParents().next().removeFile(file);
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "シートをjsonで出力",
functionName : "outputJson"
}];
spreadsheet.addMenu("CUSTOM MENU", entries);
};
기사를 쓸 때의 환경
Google 크롬 74.0.3729.108
Windows 10
참고
Reference
이 문제에 관하여(Google 스프레드시트에서 JSON 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/void_vtuber/items/a0c81392ce57b49dbb61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
스크립트 편집기를 열면 생성 된 매크로 .gs 및
스크립트 편집기 메뉴의 파일 -> 새로 만들기 -> HTML 파일
에서 dialog.html을 만듭니다.
내용은 각각
매크로.gs
function main() {
var html = HtmlService.createTemplateFromFile("dialog").evaluate();
SpreadsheetApp.getUi().showModalDialog(html, "ファイルダウンロード");
}
function getData() {
var sheet = SpreadsheetApp.getActiveSheet();
var maxRow = sheet.getLastRow();//行数 -
var maxColumn = sheet.getLastColumn();//列数 |
var keys = [];
var ret = [];
//1列目のkeyの名前取得
for (var x = 1; x <= maxColumn; x++) {
keys.push(sheet.getRange(1, x).getValue());
}
//データ
for (var y = 2; y <= maxRow; y++) {
var json = {};
for (var x = 1; x <= maxColumn; x++) {
json[keys[x-1]] = sheet.getRange(y, x).getValue();
}
ret.push(json);
}
//整形してテキストに
return JSON.stringify(ret, null, '\t');
}
function onOpen() {
// メニューバーにカスタムメニューを追加
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "jsonで出力",
functionName : "main"
}];
spreadsheet.addMenu("マクロ", entries);
};
dialog.html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<script type='text/javascript'>
function handleDownload() {
var content = <?= getData(); ?>;
var blob = new Blob([ content ], { "type" : "application/json"});
document.getElementById("download").href = window.URL.createObjectURL(blob);
}
</script>
</head>
<body>
<a id="download" href="#" download="test.json" onclick="handleDownload()">ダウンロード</a>
</body>
</html>
이러한 파일을 만들고 스프레드시트로 돌아가면
메뉴에 매크로라는 항목이 추가되어 있으므로 선택하여 실행합니다.
GAS는 붙어 구이 칼날이므로 작법이 별로 좋지 않을지도…
실패한 방법
파일 출력은 다음과 같은 방법으로 할 수 있다고 했습니다만, 내 환경에서는
Invalid argument: parent.mimeType
그리고 나서 잘 가지 않았다.
이 버그 제대로 쫓지 않습니다 ...
매크로.gsfunction outputJson() {
var sheetfile = "myFileName";
var destfolder = "フォルダのID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder).addFile(file);
var docfile = file.getParents().next().removeFile(file);
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "シートをjsonで出力",
functionName : "outputJson"
}];
spreadsheet.addMenu("CUSTOM MENU", entries);
};
기사를 쓸 때의 환경
Google 크롬 74.0.3729.108
Windows 10
참고
Reference
이 문제에 관하여(Google 스프레드시트에서 JSON 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/void_vtuber/items/a0c81392ce57b49dbb61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function outputJson() {
var sheetfile = "myFileName";
var destfolder = "フォルダのID";
var sheet = SpreadsheetApp.create(sheetfile);
var file = DriveApp.getFileById(sheet.getId());
var destfolder = DriveApp.getFolderById(destfolder).addFile(file);
var docfile = file.getParents().next().removeFile(file);
}
function onOpen() {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var entries = [{
name : "シートをjsonで出力",
functionName : "outputJson"
}];
spreadsheet.addMenu("CUSTOM MENU", entries);
};
Google 크롬 74.0.3729.108
Windows 10
참고
Reference
이 문제에 관하여(Google 스프레드시트에서 JSON 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/void_vtuber/items/a0c81392ce57b49dbb61
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Google 스프레드시트에서 JSON 출력), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/void_vtuber/items/a0c81392ce57b49dbb61텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)