2024年10月21日(月)に行ったセミナーの資料です。 以下の構成で説明します。
- 全体の説明
- Googleフォーム・登録したい情報
- Googleフォーム・公開方法
- QRコードにする
- Googleスプレッドシート
- 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にペースト(貼り付け)します。
/**
* スプレッドシート起動時・メニューを追加
*/
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」をクリックしてください。

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