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

white wooden rectangular table

2024年10月21日(月)に行うセミナーの資料です。

Googleフォーム

Googleスプレッドシート

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 = 3;       // 散布薬剤
    const noudoCol = 4;         // 散布濃度
    const ryouCol = 5;          // 散布量
    const gaityuuCol = 6;       // 対象病害虫
    const memoCol = 7;          // 備考
    const photoCol = 8;         // ラベルの写真
    const statCol = 9;          // 済み

    // シートを取得
    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("完了");
}

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