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

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

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

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

1.全体の説明

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

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

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

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

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

(3)利用するツール

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

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

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

Googleのアプリのメニュー(「ドライブ」を赤枠で囲んだもの)

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

Googleドライブの画面(「+新規」を赤枠で囲んだもの)

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

「+新規」のメニュー(「Googleフォーム」を赤枠で囲んだもの)

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

新しいフォーム(無題のフォーム)の画面

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

フォームの名前に「モモ」と入力した画面

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

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

質問に「散布薬剤」と入力した画面(「ラジオボタン」を赤枠で囲んだもの)

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

質問の形式のメニュー(「記述式(短文)」を赤枠で囲んだもの)

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

質問「散布薬剤」を記述式(短文)にした画面(右側の「+」を赤枠で囲んだもの)

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

質問「散布薬剤」の下に、新しい質問が追加された画面

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

質問「散布濃度」を記述式(短文)にした画面

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

散布薬剤・散布濃度・散布量・対象病害虫の質問を登録したフォーム

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

質問「備考」を段落にした画面

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

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

質問「写真」の形式のメニュー(「ファイルのアップロード」を赤枠で囲んだもの)

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

「回答者によるドライブへのファイルのアップロードを許可」の警告(「次へ進む」を赤枠で囲んだもの)

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

質問「写真」の設定(「ファイルの最大数」を赤枠で囲んだもの)

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

すべての質問を登録したフォーム「モモ」

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

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

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

フォームの画面(「送信」を赤枠で囲んだもの)

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

「フォームを送信」の画面(リンクのマークと「URLを短縮」を赤枠で、リンクを青で囲んだもの)

4.QRコードにする

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

「フォームを送信」の画面(「コピー」を赤枠で囲んだもの)

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

「QRコード作成」の検索結果(一番上の「QRコード作成【無料】/QRのススメ」を赤枠で囲んだもの)

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

QRコードを作るサイトの「さっそく作る」の欄に、URLを貼り付けた画面

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

作成したQRコード(「ダウンロードする」を赤枠で囲んだもの)

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

ダウンロードしたQRコードの画像ファイル(QR_956172.png)の表示

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

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

5.Googleスプレッドシート

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

「フォームを送信」の画面(左上の「×」を赤枠で囲んだもの)

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

フォームの「回答」の画面(「スプレッドシートにリンク」を赤枠で囲んだもの)

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

「回答の送信先を選択」の画面(「作成」を赤枠で囲んだもの)

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

作成されたスプレッドシート「モモ(回答)」

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

ドライブにできたスプレッドシート「モモ(回答)」とフォルダ「モモ(File responses)」

6.Googleカレンダーへ転記

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

スプレッドシートの「拡張機能」のメニュー(「Apps Script」を赤枠で囲んだもの)

Apps Scriptの画面がでます。

Apps Script の画面(無題のプロジェクト)

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

「プロジェクトの名前を変更」で「カレンダー転記」と入力した画面

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

不要な行を削除した Apps Script の画面

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

/**
 * スプレッドシート起動時・メニューを追加
 */
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行:カレンダの「説明」

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

プログラムを貼り付けた Apps Script の画面

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

Apps Script の画面(「ドライブにプロジェクトを保存」ボタンを赤枠で囲んだもの)

転記してみる

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

フォームから登録した情報が入ったスプレッドシート

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

ドライブのスプレッドシート「モモ(回答)」

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

スプレッドシートに追加されたメニュー「カレンダー書き出し」

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

転記する前のGoogleカレンダー(2024年11月)

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

「認証が必要です」の画面(「OK」を赤枠で囲んだもの)

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

「アカウントの選択」の画面

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

「このアプリは Google で確認されていません」の画面(「詳細」を赤枠で囲んだもの)

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

詳細を表示した画面(「カレンダー転記(安全ではないページ)に移動」を赤枠で囲んだもの)

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

アクセスの許可を求める画面(「許可」を赤枠で囲んだもの)

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

「完了」の表示(「OK」を赤枠で囲んだもの)

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

予定が転記されたGoogleカレンダー

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

転記された予定の説明(「AAA薬剤」「1000倍」などを赤枠で囲んだもの)

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

変更でつまづく

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

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

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

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

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

Apps Script の画面(「実行ログ」を赤枠で囲み、console.log の行に黄色の線を引いたもの)

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

実行する関数の選択(「実行」と「createSchedule」を赤枠で囲んだもの)

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

スプレッドシートの「完了」の表示(「OK」を赤枠で囲んだもの)

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