現場の事務員の人ってルールを守らず己のルールでスプレッドシートを作る傾向があります。そしてそのデータ構造はプログラムで扱うには問題がおおありの構造ってだけでなく、勝手に列を追加したり、ID列を左端に配置してるのに移動させてしまったり。。こういう問題のある行動が目立ちます。

さて、そんなデータ構造であった場合、Google Apps Scriptで配列でデータを取り他のシートへ加工して転記する場合、確実にデータが壊れます。そこで、列の増減や列の位置を移動に対応できる構造にして備えておくことも必要になります。

難易度:

今回使用するスプレッドシート

Query関数を使って列の入れ替えをしてからデータを取得する方法も有効です。このシートの使い方は、メニューにある「取り出す」⇒「列増減対応抽出」を実行すると、増減シートから貼り付け先に指定の列のデータだけ、またID列を左端として抽出します。

コードとJSON出力結果

ソースコード

  • backjson関数でスプレッドシートデータをタイトル行を含めてJSON化する。ここがポイントです。
  • copysheet関数でjson化されたデータから欲しい列だけを取り出して、配列に組み直す
  • 最後に一括でシートに書き込みする

backjsonの出力結果

backjson関数がスプレッドシートのデータをどのようにJSON化して出力するか?console.logで出してみるとこんな感じで出力されます。配列で位置を指定してやり取りをするわけじゃないので、列名を変更するようなことをやられなければ、列の位置が変わろうが、間に新しい列が増えようが対応可能です。

  • 配列内にjson化したデータがレコードとして格納されています。
  • 各レコードは、jsonという変数に格納していた場合、json[1][“商品名”]にて、2番目のレコードの商品名を取得できます。
  • 列名で指定してるため、データの増減が増えようと位置が変わろうと確実に取得が可能になります。その為のJSON化です。

関連リンク

共有してみる: