GoogleスプレッドシートのデータをJSONに変換して保存してみる
そこまで複雑なものは必要ないので、簡易的に作る作った
初めてGASを触ったMijinko_SD.icon https://gyazo.com/07e4f414ef4239dc1b34276567c50e31
これの1行目をキーとして、JSONを生成したい
ソースコード
スプレッドシートのメニューバーの「拡張機能」から「Apps Script」をクリックし、ソースコードエディタを開く フォルダIDはフォルダを開いた時のURLに書かれている
https://drive.google.com/drive/folders/<フォルダID>
code:コード.gs.js
const folderId = ""
function convertJson() {
const s = SpreadsheetApp.getActiveSheet()
const ui = SpreadsheetApp.getUi()
const lastRow = s.getLastRow()
const lastColumn = s.getLastColumn()
const table = s.getRange(1,1,lastRow,lastColumn).getDisplayValues()
const tableTitleRow = table0 const tableBodyRows = table.slice(1)
const jsonString = array2jsonString(tableTitleRow, tableBodyRows)
const filename = s.getSheetName()+".json"
const onFileExist = () => {
const answer = ui.alert(
${filename}は既に存在します。\n上書きしますか?,
ui.ButtonSet.YES_NO,
)
if(answer == ui.Button.YES) return true
else return false
}
const onSave = () => {
ui.alert(
JSONファイルを${filename}として保存しました。,
ui.ButtonSet.OK,
)
}
saveTextFile(
jsonString,
filename,
onFileExist,
onSave
)
}
function saveTextFile(
content,
filename,
onFileExist = undefined, // falseを返した場合はファイル上書きを中断する
onSave = undefined,
) {
const contentType = "text/plain"
const charset = "utf-8"
const blob = Utilities
.newBlob("", contentType, filename)
.setDataFromString(content, charset)
const folder = DriveApp.getFolderById(folderId)
const hitFile = folder.getFilesByName(filename)
const isFileExist = hitFile.hasNext()
if(isFileExist) {
if(typeof onFileExist == "function") {
if(!onFileExist()) return
}
const file = hitFile.next()
file.setContent(content)
} else {
folder.createFile(blob)
}
if(typeof onSave == "function") onSave()
}
function array2jsonString(key, values) {
const keyLen = key.length
const valueRowLen = values.length
const obj = [] // ここだけ名前適当すぎ
for(let i = 0; i < valueRowLen; i++) {
const value = {} // 疲れて名前思いつかん
for(let j = 0; j < keyLen; j++) {
}
obj.push(value)
}
return JSON.stringify(obj, null, 2)
}
実行ボタンを作る
これ見たら大体分かる
実行する
ボタンを押すだけ
予め指定したフォルダにjsonファイルが生成される