0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASでスプレッドシートの情報をjsonファイルに出力

Last updated at Posted at 2023-05-30

はじめに

最近GASを勉強しているがGASを用いてデータを収集してそのデータをpythonなどで直接使いたいなーと思った。

じゃあJSONファイルあったら良くねと思いコードを書くことにした。

仕様

スプレッドシートの情報を一つづつgetして文字列にし最後に文字列にしたものをファイルに移してGoogleDriveに保存している。

一番最初のグループ名は、"Object"となっている

やり方

1,横軸にkeyを縦軸にitemになっている表を使用する
name age
boy 15
jem 12
key 15
2,そのスプレッドシート上でGASを開く
なぜならこのコードの(SpreadsheetApp.getActiveSheet();)と書いてあるため

↑どういう意味かというと今開いているスプレッドシートの情報をgetするよていうこと。

3,コードを貼り付けて実行
そしたらGoogleDriveに(json_file.json)というファイルができてます。

とっても簡単!!

コード

main.gs
function sheetjson(){
  var sheet=SpreadsheetApp.getActiveSheet();
  var last_row=sheet.getLastRow();
  var last_column=sheet.getLastColumn();
  var key_range=sheet.getRange(1,1,1,last_column)
  var value_range=sheet.getRange(2,1,last_row-1,last_column);
  var key_list=key_range.getValues();
  var value_list=value_range.getValues();
  // console.log(key_list);
  // console.log(value_list);
  var count=0
  var dicts={}
  var print_list=[]
  var json_dict=[]
  //#json_dictにいったん保存する
  for (var x=0;x<value_list.length;x++){
    for(var y=0;y<key_list[0].length;y++){
      //console.log(key_list[0][y],value_list[x][y]);
      dicts[key_list[0][y]]=value_list[x][y];
    }
    json_dict[count]= JSON.parse(JSON.stringify(dicts));//#値渡し
    count++
  }
  count=0
  for (var x=0;x<value_list.length;x++){
    var tentative_str="{ "
    for(var y=0;y<key_list[0].length;y++){
      if(typeof(value_list[x][y])=="number"){
        tentative_str=tentative_str+String("\""+key_list[0][y]+"\": "+value_list[x][y])
      }else{
        tentative_str=tentative_str+String("\""+key_list[0][y]+"\": \""+value_list[x][y]+"\"")
      }
      if(y<key_list[0].length-1){
        tentative_str=tentative_str+", "
      }
    }
    tentative_str=tentative_str+" }"
    print_list.push(tentative_str)
  }
//#ここの場所を書き換えればグループ名を変更できる。
  var json_code="\"Object\": ["
  for(var x=0;x<print_list.length;x++){
    json_code=json_code+print_list[x]
    if(x<print_list.length-1){
      json_code=json_code+",\n\t"
    }else{
      json_code=json_code+"\n]"
    }
  }
  console.log(json_code)
  createjson_file(json_code)
}
function createjson_file(json) {
  DriveApp.createFile("json_file.json",json)
}

まとめ

最近は、GASのコードを書いているがとても面白い。サーバもいらないから手軽だし、短いコードでも自動化が簡単にできてしまうこれがいい。
これから、いろいろなことを発信したいと思う!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?