【めちゃくちゃ便利】Googleスプレッドシートの値が簡単に使いやすいjsonに変換できる!

今回の内容はスプレッドシートの使い方についてです。

スプレッドシートって便利ですよね。

無料で使えるしブラウザで簡単に動くし、オフラインでも使えるし、非の打ち所がないです。

そんな超便利なスプレッドシートはWeb制作の現場でもかなり役に立つって知ってましたかか?

スプレッドシートの値はjsonにできてしまうのです。

スプレッドシートをウェブに公開する

スプレッドシートをjsonとして利用するとき、共有設定は関係ありません。

上のメニューにあるファイルからウェブに公開にいき、公開ボタンをクリックしなければいけません。

ボタンクリックするだけなので難しくはないですが、共有設定とウェブに公開が似ているから混乱しないようにしてください。

スプレッドシートシンプルなjsonに変換

ウェブに公開したスプレッドシートはパラメーターを設定することでjsonとなります。

https://spreadsheets.google.com/feeds/list/シートのIDを入力/od6/public/values?alt=json

PHPにわたす場合はこんな感じで記述します。

$data = "https://spreadsheets.google.com/feeds/list/シートのIDを入力/od6/public/values?alt=json";
$json = file_get_contents($data);
$json_decode = json_decode($json);

しかし、このjsonは情報量が多くシートに入力された値以外の情報も取得できてしまうので、非常に複雑な構造をしています。

そこで、必要な値だけを取り出して整形した新たなjsonを作成すると良いでしょう。

//keyとして使う1行目を取得
$t = '$t';
$key = explode(',', $json_decode->feed->entry[0]->content->$t);
$key_edit = array();
foreach ($key as $v) {
   $key_edit[] = substr($v, 0, strcspn($v, ':'));
}
unset($v);
 
//使いやすい形に変換
foreach ($json_decode->feed->entry as $v) {
   foreach ($key_edit as $key) {
       $item = 'gsx$'.trim($key);
       $this->change_array['id' . $v->{'gsx$id'}->{'$t'}][$key] = $v->{$item}->{'$t'};
   }
   unset($key);
}
unset($v);

class化して使いやすくまとめる

仕上げに処理をclass化して、jsonをコピペで使えるようにtextareaの中で表示させるようにすれば完成です。

<?php
$ChangeData = new ChangeData();

class ChangeData
{
   private $change_array = array();
 
   public function __construct()
   {
       //json取得
       $data = "https://spreadsheets.google.com/feeds/list/シートのIDを入力/od6/public/values?alt=json";
       $json = file_get_contents($data);
       $json_decode = json_decode($json);
 
       //keyとして使う1行目を取得
       $t = '$t';
       $key = explode(',', $json_decode->feed->entry[0]->content->$t);
       $key_edit = array();
       foreach ($key as $v) {
           $key_edit[] = substr($v, 0, strcspn($v, ':'));
       }
       unset($v);
 
       //使いやすい形に変換
       foreach ($json_decode->feed->entry as $v) {
           foreach ($key_edit as $key) {
               $item = 'gsx$'.trim($key);
               $this->change_array['id' . $v->{'gsx$id'}->{'$t'}][$key] = $v->{$item}->{'$t'};
           }
           unset($key);
       }
       unset($v);
      
       //コピペするjsonを表示
       print '<textarea style="width:100%;height:100%;">';
       print json_encode($this->change_array, JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT);
       print '</textarea>';
   }
}

Web制作の効率がめちゃくちゃ上がる

エクセルのスキルって経理事務の仕事に必要なものと思ってる人多いと思いますが、Web制作の現場でもめちゃくちゃ利用します。

特にデータベースを利用できない静的なサイトを使う時はエクセルやスプレッドシートをデータベースのようにして使うととても便利です。

スプレッドシートであれば、データをjsonに変換できるので、よりデータベースとしての役割を担うことができるのではないでしょうか。

効率とか保守性を徹底的に追求しないと、プログラマはもちろんですが、ビジネスマンとしても失格だと僕は思います。

効率と保守性の両方を兼ね備えた、スプレッドシートのjson出力はとても便利なのでぜひ利してみてください。

正社員という奴隷制度に中指を立てるWebエンジニアです。PHPが得意。繋がれた鎖を断ち切るために、自由を取り戻すために、プログラミングスキルを磨く日々です。プログラミングと個人でもできるビジネスについて、情報発信しています。

詳しくはこちら