農林水産DXセミナー・資料

white wooden rectangular table

2024年10月21日(月)に行ったセミナーの資料です。 以下の構成で説明します。

  1. 全体の説明
  2. Googleフォーム・登録したい情報
  3. Googleフォーム・公開方法
  4. QRコードにする
  5. Googleスプレッドシート
  6. Googleカレンダーへ転記

全てGoogleの無料で使えるツールを利用します。 Googleのアカウントと、PCで利用できるChrome(ブラウザ)を用意してください。

1.全体の説明

(1)想定する使い方と目標

桃やぶどうなどの果物を作られている人を想定します。 定期的、または適時行った作業を、その場でスマホを使い登録します。

利用するツールはGoogleフォームで、フォームのURLはQRコードにして、ハウスの入り口に貼っておきます。 こうすることで違うフォームに登録するのを防止したり、お手伝いの人に登録をお願いするのが簡単になります。

Gooleフォームに登録した情報はGoogleスプレッドシートに保存されますが、これをGoogleカレンダーに転記します。 Googleカレンダーを見れば、どんな作業を行ったのか確認できることを目標とします。

(2)登録したい情報(質問と表示されます)

  • 散布する薬剤(散布薬剤)
  • 薬剤の濃度(散布濃度)
  • 散布した量(散布量)
  • 対象とした害虫(対象病害虫)
  • 備考
  • 写真

(3)利用するツール

  • GoogleChrome(Chrome): Googleが提供するブラウザ
  • Googleドライブ(ドライブ): ファイル置き場
  • Googleフォーム(フォーム): ノーコードで情報や写真を登録できるツール
  • Googleスプレッドシート(スプレッド): エクセルのようなツール
  • Googleカレンダー(カレンダ): 情報を登録できるカレンダー
  • GoogleAppsScript(GAS): スプレッドシートで利用できる開発言語

2.Googleフォーム・登録したい情報

Googleフォームには、下記で説明する以外の使い方もあるので、いろいろ調べてみてください。

ドライブからフォームを作るので、Chromeを使いGoogleにログインして、ドライブを起動します。

ドライブで「+新規」をクリック

「Googleフォーム」をクリック

新しいフォーム(無題のフォーム)ができます。

フォームの名前を登録します。 今回は「モモ」です。 左上の「無題のフォーム」は自動で「モモ」に変わります。

入力したい情報の項目を登録していきます。 今回は全て文字として、以下の項目(質問)を登録します。

  • 散布する薬剤(散布薬剤)
  • 薬剤の濃度(散布濃度)
  • 散布した量(散布量)
  • 対象とした害虫(対象病害虫)

質問に「散布薬剤」と入力し、隣の「ラジオボタン」をクリックします。

ラジオボタンは選択肢を決めておき、そこから選ぶ方式ですが、今回は文字として入力するので「記述式(短文)」をクリックします。

次の質問を登録するので、右側の「+」をクリックします。

散布薬剤の欄が小さくなって、その下に項目が追加されます。

新しい質問(散布濃度)を登録して、記述式(短文)にします。

以下、同じ要領で、散布量、対象病害虫を登録します。

備考は、長い文章も登録するかもしれないので、複数行が登録できるようにします。

※段落は複数行の入力ができ、記述式(短文)は1行の入力と思ってください。

写真は「ファイルのアップロード」を選択します。

警告?が表示されます。 このフォームを使って登録する人は、Googleへのログインが必要、と言う警告です。 「次へ進む」をクリックします。

写真が登録できる質問ができました。 基本はこのままで良いです。 もし複数の写真を登録したいときは、「ファイルの最大数」を変更してください。

これで予定した質問は登録できました。

※通常エクセルやワードでは、ファイルの保存を行う必要があります。 でもGoogleフォームは自動で保存します。 これが不便なときもありますが・・・

3.Googleフォーム・公開方法

質問は登録しましたが、このままでは使えない(アクセス先が分からない)ので、URL(Googleフォームを使うときのアクセス先)を取得します。 「送信」をクリックします。

真ん中のマークをクリックします。 また「URLを短縮」もチェックを入れます。 リンクの青い手書きで囲ったところが、URL(リンク)となります。

4.QRコードにする

URL(リンク)をQRコードにします。 URLをQRコードへ変換するには、無料で公開されているサービスを利用します。 まずは、作成したURL(リンク)をコピーします。 「コピー」をクリック。

ブラウザの別のページで「QRコード作成」と検索します。 どれでも良いですが、一番上のサービスにしてみます。

「さっそく作る」の欄に、URLをペースト(CTRL+C)します。

「作成する」をクリックすると、QRコードができるので「ダウンロードする」をクリックします。

ダウンロードフォルダにQRコードの画像ファイルがあると思います。 ファイル名はダウンロードしたとき、右上などに表示されます。

このQRコードをハウスの入り口などに貼り付けておきます。 スマホの写真アプリでQRコードを写そうとすると「URLだよ!」と言うマークが表示されるので、それをタップしてください。

※スマホでQRコードを読み取る方法は、機種により違いがあるので、スマホのマニュアルを参照してください。

5.Googleスプレッドシート

QRコードを使って作業を入力すると、その作業の情報はスプレッドシートに登録されます。 スプレッドシートを使うための設定を行いましょう。 Googleフォームに戻り、「×」をクリックします。

「回答」、「スプレッドシートにリンク」の順にクリックします。

ファイル名を決める画面ですが、そのまま「作成」をクリックします。

「モモ(回答)」と言うスプレッドシートができます。

このスプレッドシートがどこにあるのか?と言うと、ドライブに作られています。 また、「モモ(File responses)」と言うフォルダもできています。 これは写真を保存するフォルダになります。

6.Googleカレンダーへ転記

Googleカレンダーへの転記は、プログラムを作らなければなりません。 ちょっと難しいですが、変更する部分が分かれば、応用はできると思います。 まず、プログラムを作るのはGoogleスプレッドシートの機能を使います。
「拡張機能」、「Apps Script」をクリックします。

Apps Scriptの画面がでます。

「無題のプロジェクト」を「カレンダー転記」と書き換えるため、「無題のプロジェクト」をクリックします。 書き換えたら「名前を変更」をクリックします。

プログラムは書き換えるので、不要な行を削除しておきます。

下記のプログラムの全てをコピーして、AppsScriptにペースト(貼り付け)します。

JavaScript
/**
 * スプレッドシート起動時・メニューを追加
 */
function onOpen() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();

    var subMenus = [];
    subMenus.push({
        name: "実行",
        functionName: "createSchedule"
    });
    ss.addMenu("カレンダー書き出し", subMenus);
}
  
/**
* スプレッドシートからカレンダへ書き出し
*/
function createSchedule() {
    // 自分のGoogleアカウント
    const gAccount = "*****@gmail.com";

    // データが始まる行(一番上が1です)
    const topRow = 2;

    // 列名と列番号(A列が1、B列は2、C列は3です)
    const timeStampCol = 1;     // タイムスタンプ
    const yakuzaiCol = 2;       // 散布薬剤
    const noudoCol = 3;         // 散布濃度
    const ryouCol = 4;          // 散布量
    const gaityuuCol = 5;       // 対象病害虫
    const memoCol = 6;          // 備考
    const photoCol = 7;         // ラベルの写真
    const statCol = 8;          // 済み

    // シートを取得
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

    // googleカレンダーの取得
    var calender = CalendarApp.getCalendarById(gAccount);

    // 上から1行ずつ、最終行まで処理する
    var lastRow = sheet.getLastRow();   // 最終行
    for (iRow = topRow; iRow <= lastRow; iRow++) {

        // 1行のデータを取得する
        var timeStamp = sheet.getRange(iRow, timeStampCol).getValues();
        var yakuzai = sheet.getRange(iRow, yakuzaiCol).getValues();
        var noudo = sheet.getRange(iRow, noudoCol).getValues();
        var ryou = sheet.getRange(iRow, ryouCol).getValues();
        var gaityuu = sheet.getRange(iRow, gaityuuCol).getValues();
        var memo = sheet.getRange(iRow, memoCol).getValues();
        var photo = sheet.getRange(iRow, photoCol).getValues();
        var stat = sheet.getRange(iRow, statCol).getValues();

        // 既に処理したものは除外します。
        if (stat == "済") {
            continue;
        }
  
        // カレンダーに登録するデータを作成する
        var startTime = new Date(timeStamp);
        var title = "モモ " + yakuzai;
        var options = {description: yakuzai + "\n" + noudo + "\n" 
            + ryou + "\n" + gaityuu + "\n" + memo + "\n" + photo};

        console.log("title: " + title)

        try {
            // Googleカレンダーに書き込み
            calender.createEvent(title, startTime, startTime, options);
  
            // 済みにする
            sheet.getRange(iRow, statCol).setValue("済");

        // エラーのとき
        } catch(e) {
            console.log(e);
        }

    }
    // 完了通知
    Browser.msgBox("完了");
}

カレンダー転記プログラムの説明

1~13行 変更は不要。 スプレッドシートにメニューを追加します。
20行 変更が必要。 ***の部分は、自分のGoogleアカウントに書き換えます。

26~33行 変更が必要。 ここでは質問の項目全てを指定していますが、カレンダで必要なものだけでもOKです。
46~53行 変更が必要。 上記26~33行に対応した部分で、スプレッドシートの列の情報を取得します。 上記26~33行に合わせて、必要なものだけでOKです。

このプログラムでは8列(H列)を「処理済み」として使っています。 同じ行のデータを2回処理すると、カレンダに同じ情報が2つ登録されるのを防ぐためです。

61~64行 変更が必要。 カレンダに登録する文字を作っています。
62行:カレンダの「タイトル」
63、64行:カレンダの「説明」

コピーができると以下のようになります。

「ドライブにプロジェクトを保存」ボタンをクリックします。

転記してみる

スプレッドシートに情報が無いと、カレンダに転記できません。 スマホでQRコードを読み取り、何か登録してみましょう!

一度、スプレッドシートを閉じます。 スプレッドシートを表示しているブラウザのページを閉じるだけです。

スプレッドシート「モモ(回答)」を開きます。 「カレンダー書き出し」が追加されています。

転記する前にカレンダを確認してみます。 まだ何も登録されていません。

スプレッドシートに戻り、「カレンダー書き出し」をクリックしてみます。 「実行」をクリックすると処理が始まります。 最初の実行時だけ、認証が必要になります。 「OK」をクリックします。

ここからは、個人の環境で違うかもしれませんが、参考として下さい。 「アカウントの選択」で自分のGoogleアカウントを選択します。

「詳細」をクリックします。

「カレンダー転記(安全ではないページ)に移動」をクリック

「許可」をクリックします。

これでカレンダー書き出しが実行されます。 終了したら画面に「完了」が表示されるので、OKをクリックします。

カレンダを確認してみます。

転記ができているようです。 説明を確認するためクリックしてみます。

説明も転記できているようです。

変更でつまづく

(1)プログラムは1回処理したら「済」とマークを付けます。

スプレッドシートに「済」があったら、消してから実行しましょう。

(2)実行途中の情報を確認したい

プログラムの66行に「console.log(“title” + title)」とあります。 これは「実行ログ」でプログラム処理中にtitleの内容を画面で見ることができる機能です。

AppsScriptのページを開きます。 「実行ログ」をクリックします。

「onOpen」、「createSchedule」、「実行」とクリックします。

titleの内容が表示されます。 またこの画面はなかなか終わりません。 スプレッドシートのページに戻って「OK」をクリックしてください。

ザクッとですが、講習会で行った内容を書いてみました。 終わり。

株式会社ルークシステムの代表です。 社会人になってからずーっと、コンピュータの技術者です。 年齢が上がるとプログラムが作れなくなる、と聞いていましたが、今も必要になれば、あれこれ作っています。 私はプログラムを作る(設計すること)が楽しいので、これからも作り続けたいと思っています。