複雑な作業をGoogle Apps Scriptで自動化する!

2014-08-28

農業でのIT活用で一番多いのが、栽培記録や出荷記録を取ることです。でも、記録を取ることが目的ではなく、その記録を集計したり分析して経営判断や、日々の作業の判断に使うことが目的です。

でも集計や分析の為にデータを加工するのってなかなか面倒で、サボってしまうことも多いと思います。そんな時は複雑な作業を自動化すればいいのです!

ピン定期的に集計したり、分析したりしないと意味がない

例えば、栽培記録を取っていたとしましょう。最初のうちは記録すること自体に意味があるケースがあります。それは、将来的に比較する為のベースとなる情報を蓄積することだったり、または記録することで作業への意識を高めたりなどです。
ただ、本来はこの記録した情報を頻繁に確認して次のアクションを早めに打っていく、と言うのが目的だと思います。

例えば、追肥するタイミングであったり、農薬を散布するタイミング、または収穫の時期の予測などです。
これらの判断をする為の情報を得るには、記録した情報そのものではなく、その情報を集計したり、比較・分析したりすることが必要になります。

例えば、月毎での収穫までの日数を予測するのに過去の実績を集計して平均を出して比較する、などがあります。

ピン2一生懸命記録しても、そのあとで挫折してしまう理由

集計や分析が必要なことはわかっていても、なかなかその運用を回せていないケースを多く聞きます。それは何故でしょうか?

この計算には、足し算や割り算を使ったり、また月別に集計したり、品種別に集計したりと色々と作業があります。

記録する部分も日々の作業で大変ですが、割と単純な作業なのでちょっと工夫すれば続けることができます。ただ、集計や分析は作業自体が複雑で、計算式を使うだけでは対応できないケースが多く、毎回地道に人手でやることが多いです。

まだ計算式や作業手順がメモとかでまとまっていればいい方で、それもなく毎回人が考えながら作業することも多いと思います。

ピン3スクリプトを使うと自動化ができます

このように計算式だけでは自動化が難しい場合に役立つのが、表計算ソフトが持っているマクロやスクリプト言語です。例えばExcelであれば、VBAと言うスクリプト言語でマクロを書けます。

そして農園観察日記が推奨する、Googleドライブにもこのマクロ、スクリプト言語に相当するものがあります。それがGoogle Apps Scriptです(これ以降は略して「GAS」と呼びます)。

GASを使うことで、計算式より高度で、より柔軟な処理を書くことができます。

少しイメージをつかんでもらう為に簡単な例を使って紹介しておきます。

計算式は以前の記事で紹介したように、シートのセルに式を書いておきます。式には条件も指定できますが、あまり複雑なことはできません。

計算式サンプル

これに対してGASはセルに書くのではなく、全く別の場所に書きます。基本的にGASで処理を書く時には、関数(functionと呼びます)と言う形で一連の処理をまとめて書きます。では、計算式ではなくGASを利用して書くことってどんなことがあるのでしょうか?ここでは出荷記録を記録した後にどんなことをやるかを考えてみましょう。
上の計算式にあるように、毎回記録した内容(図の左側の表)を集計するのは、計算式を使っています。合計の出荷金額や、品種別の合計金額、月単位の出荷金額等です。さてこの後何がしたいでしょうか?ここでは、毎月の出荷金額がどのように推移しているかを視覚的に見れるようにグラフを作ってみましょう。この例のように数字が少なければ数字を見るだけでだいたい把握できますが、実際にもっと大量の数字が並ぶと、数字だけ見ていても何がなんだかわからなくなります。そういう時に概況を把握するのに適しているのがグラフです。

グラフはスプレッドシートのメニューにあるグラフ作成機能を使って作ることもできます。ですが、それだと自動化はできません。ですので自動化をするたにはGASを使ってグラフを作成する必要があります。GASで作ったグラフはスプレッドシートに貼付けることはできずに、Webページの形式や画像データとしてダウンロードすることになります。しかし、スマートフォンを活用したい農園観察日記としてはWebページでグラフ表示できたほうが、スマートフォンで見やすいのでありがたいです。

これはGASでグラフを作成した結果になります。

品種別売上比率グラフ

グラフを作成する為のGASのコードは、コメントも入れて60行くらいです。
こちらのコードの解説は別途記事を書きますね。

/**
 * ブラウザからアクセスする為の入り口になる関数
 */
function doGet() {
  
  // 別関数(createChart)を使ってグラフを作成する
  var chart = createChart();
  
  // 作成したグラフを表示するWebページを作る
  var uiApp = UiApp.createApplication().setTitle("品種別売上比率グラフ");
  // そのWebページにグラフを追加する
  uiApp.add(chart);
  
  // Webページをブラウザに返す
  return uiApp; 
}

/**
 * グラフを作る関数
 *  動作確認する際に単独で動かせるように別関数として作る
 */
function createChart(){
  // グラフの基になる表があるスプレッドシートのIDを指定する
  // IDはそのスプレッドシート開いた時のURLに書かれている
  var sheet = SpreadsheetApp.openById("178vux_yDK0JIuPBzwRXwZUleaQ6d7x5-OIxgjjSVdhI").
  
  // グラフの基になる表があるシート名を指定する
  getSheetByName("売上集計");

  // グラフに渡すデータには「DataTable」を使う
  var data = Charts.newDataTable();

  // DataTableのカラム(列)としては、今回は「品種」と「売上金額」を使う
  data.addColumn(Charts.ColumnType.STRING, "品種");
  data.addColumn(Charts.ColumnType.NUMBER, "売上金額");
  
  // スプレッドシート上の表を読み込んで、DataTableに値をセットする
  for(var i=6; i<=9; i++){
    var arr = [
      sheet.getRange(i, 6).getValue(),
      sheet.getRange(i, 7).getValue()
    ];
    data.addRow(arr);
  }
  // DataTableを完成させる
  data.build();
 
  // グラフオブジェクト(円グラフ = PieChart)を生成する
  var chart = Charts.newPieChart()
  // 準備したDataTableを渡す
  .setDataTable(data)
  // グラフのタイトルを設定する
  .setTitle("品種別売上比率")
  // グラフのサイズを指定する
  .setDimensions(400, 350)
  // グラフを生成する
  .build();
  
  return chart;
}

これでGASを使ってグラフを作成できることがわかりました。このような複雑な処理をプログラムコードにしておくことで、ボタン一つ押すだけでグラフをすぐに作れるようになります。でも、ボタン押さないといけないんですよね。それすら面倒な場合もありますよね(面倒というよりは、ボタンを押すことを忘れたら意味がない)。
ですので、必要な時に自動でグラフができて、且つグラフができたことをメール等で教えてくれたらいいですね。

このような部分もGASを使うとできてしまいます。処理を自動で呼び出すのが「トリガー」と呼ばれる機能です。トリガーでは、スプレッドシートを開いた時、編集された時などの他に、時間起動の指定もできます。これによって、記録した内容を毎日集計したり、月単位で集計したりという作業を自動化できます。更にGASはスプレッドシートの操作だけではなく、Gmail(Googleのメールサービス)の操作もできるので、集計が終わったら自分宛にメールを送信することもできます。これで確認を忘れることも防止できると言うわけです。この辺りの具体的なやり方も別記事で説明していきますね。

ピン4自動化する目的は効率化だけでない!

このようにGASを利用することで、複雑な処理も自動化することができます。

定期的にやらないといけないことを自動化をしないと、毎回面倒な作業が必要で、そのうち挫折してしまうかもしれません。このように自動化することで、作業を効率化することができます。ただ、単なる作業効率化だけではありません。もともとの作業の目的が、経営判断する為の集計・分析作業だとすると、作業をサボってしまうと適切な経営判断ができないことになってしまいます。その結果、判断ミス、機会損失…などにつながる可能性もあるわけです。

ですから、そのような定例作業の自動化することは農業経営をする上では必須と言えるでしょう。情報を見て判断するのが人がやるべきことで、作業はコンピュータにさせればいいのです。特に人的リソースが少ない、小規模な農家さんこそ自動化を推進すべきでしょう。そして自動化はそんなに難しいことではないのですから。

これからも、当農園観察日記のホームページではGASを活用した様々な処理の作り方を紹介していきます。わかりやすいように動画解説も付けていく予定ですので、楽しみにしていてください。

マーク次にこちらの情報をご覧ください

  • 無料レポート

スポンサーリンク

Copyright(c) 2014 Natural Fun Factory All Rights Reserved.