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("完了");
}