Google Apps ScriptでJSONファイルを作成し保存(ダウンロード)する方法

Google Apps ScriptでJSONファイルを作成し保存(ダウンロード)する方法

GASでGoogleドライブの情報をJSONファイルとして作成し保存する

Googleドライブ上にフォルダやファイルを格納し、その情報をGASで取得し、JSON形式でファイル保存するということをこの記事では紹介していきます。

JSONとは

MDN Web DocsのJavaScript オブジェクト入門における定義を引用すると下記の通りです。

JavaScript Object Notation (JSON) は、JavaScript オブジェクト構文に基づいて構造化されたデータを表現するための標準のテキストベースのフォーマットであり、ウェブサイト上でデータを表現し、送信するために一般的に使用されます (すなわち、サーバーからクライアントへデータを送信して、その結果ウェブページ上に表示することができます)。
 

具体的な扱い方などについてはJSON の操作が詳しいです。アプリケーション間でデータをやり取りするときに一般的に用いられているデータ形式ですね。

今回作成したもののご紹介

Googleドライブ内にあるフォルダやファイルの名前・IDを取得して、最終的にJSONファイルを作成します。

Googleドライブの形式は以下となります。親フォルダとなるRootのフォルダがあり、カテゴリー>タイトルのフォルダという3階層になります。タイトルフォルダには、png, mp3, txtの3ファイルがあるといった形です。

Root – index.json
├Folder A (Category)
│├Folder a (Title)
│ │└a.png , a.mp3 , a.txt
│└Folder b (Title)
│  └b.png , b.mp3 , b.txt
├Folder B (Category)
│├Folder c (Title)
│ │└c.png , c.mp3 , c.txt
│└Folder d (title)
│  └d.png , d.mp3 , d.txt
(略)
 
イメージとしては以下のようになります。
Google Apps ScriptでJSONファイルを作成し保存する方法1
大まかな処理の流れとしては以下の通りです。
  1. GoogleドライブでRootフォルダIDを指定して、直下のフォルダとファイルの情報を取得する。
  2. 取得した情報をGoogleスプレッドシートに書き込む。
  3. Googleスプレッドシートに書き込まれた情報を元にJSONを生成し、JSONファイルとして保存する。
事前準備として、 スプレッドシート側では下記のようにシートを定義しておきます。 
Google Apps ScriptでJSONファイルを作成し保存する方法2

また、同じく事前準備として、Rootフォルダ名、RootフォルダID、上書き時に保存するJSONファイルのIDをスクリプトエディタ内にて記述しておきます(スプレッドシートに設置したIDを読み込むようなことももちろんできますが、今回はそこまでやってません)。

Google Apps ScriptでJSONファイルを作成し保存する方法3

それでは、実際にフォルダ名やフォルダ・ファイルのIDを取得していきます。カスタムメニューの「リスト更新」を実行します。

Google Apps ScriptでJSONファイルを作成し保存する方法4

すると、下記のようにスプレッドシートに各種値が記述されます。

最後のJSONファイルで保存する部分ですが、前述のカスタムメニューの画像内にあるように、以下の3種類を作ってみました。

  1. Rootフォルダに新規作成する。
  2. RootフォルダにあるJSONファイルのファイルIDを指定して上書き保存する。
  3. HTMLダイアログからダウンロードする。
 カスタムメニューの「JSONをドライブに新規出力」を実行すると以下のように指定したGoogleドライブ内にJSONファイルが保存されます。
Google Apps ScriptでJSONファイルを作成し保存する方法6
Google Apps ScriptでJSONファイルを作成し保存する方法7

それでは、RootフォルダにあるJSONファイルのファイルIDを指定して上書き保存してみます。先程のファイルではdurationの指定がありませんでしたので、スプレッドシート側で直接記入をして値設定をしておき、ファイルをアップデートしてみます。

 

Google Apps ScriptでJSONファイルを作成し保存する方法8

カスタムメニューの「JSONをドライブで上書きする」を実行すると以下のように指定したGoogleドライブ内にあるJSONファイルの内容が保存されます。今回はdurationの値が変更されていることが確認できました。

Google Apps ScriptでJSONファイルを作成し保存する方法9

最後に、HTMLダイアログを使って、JSONファイルをローカルドライブへダウンロードしてみます。今回もとりあえず値の変更を確認するために、durationの値を任意の値に変更します。

Google Apps ScriptでJSONファイルを作成し保存する方法10

カスタムメニューの「JSONをダウンロード」を実行すると以下のようにHTMLダイアログが表示されます。HTMLダイアログ内にある「ダウンロード」リンクをクリックすると、ローカルドライブへのダウンロードを行うことができます。

Google Apps ScriptでJSONファイルを作成し保存する方法11

実際にファイルを開いてみると、durationの値が変更されたJSONファイルを確認することができました。

Google Apps ScriptでJSONファイルを作成し保存する方法12

Googleドライブへの新規ファイルやファイル更新については、トリガー設定を行うことで定期実行するような処理に向いてそうですね。一方で、HTMLダイアログを用いることで、直近の値をすぐに取得したいというニーズに応えることができるのではないかと思います。

参考

スプレッドシートからjsonを作る
コピペでスプレッドシートをJSON形式のAPIにする方法
create nested json from array of objects dynamically
How to create json by JavaScript for loop?
How can I overwrite the old file with app script when I save the file?

コメントする

メールアドレスが公開されることはありません。

CAPTCHA