この記事は誰のためのものですか?
- Googleカレンダーサービスを積極的に利用している方へ
- スケジュール付きのテーブルファイルを持っていて、より生産的に作業したい人のために-常に目の前に今後のイベントがある、メールまたはプッシュ通知でリマインダー付きの通知を受け取る
- Google Apps Scriptについてすぐに知りたい人は、スクリプトとは何か、どこに適用できるかを理解してください。
必要なもの
- Googleアカウント
- JavaScriptの基本的な知識
1. GoogleSheetsでテーブルを作成します
これは、Googleドライブページに移動することで実行できます。
図:1.ワークスペースを右クリックすると、コンテキストメニューが開き、[GoogleSheets]-[空のテーブルを作成]を選択する必要があります
作成した表に、自分のスケジュールをコピーする必要があります。私の場合、これは大学での授業のスケジュールです。テーブルに次のフィールドが含まれていることが重要です。
- イベントタイトル
- 開催日
- 始まる時間
- 終了時間または期間(ただし、これは必須ではありません。その結果、イベントの期間に一般的なデフォルト値を設定できます。たとえば、1時間、またはイベントを1日中継続させることもできます)
, — , (, ..), .
. 2.
2.
2.1.
, , .
. 3. , "", " "
JavaScript. myFunction. , SetCalendar.
. 4. , — SetCalendar
, , . SetCalendar.
2.2.
JavaScript :
console.log("Hello, world!")
Google Apps Script . console Logger:
function SetCalendar() {
Logger.log("Hello, world!");
}
, "", "" Ctrl+Enter:
. 5.
2.3.
function SetCalendar() {
//
const rowStart = 1;
const colStart = 1;
//
const colsCount = 5;
const rowsCount = 67;
//
var sheet = SpreadsheetApp.getActiveSheet();
//
var range = sheet.getRange(rowStart, colStart, rowsCount, colsCount)
var data = range.getDisplayValues();
}
11.
SpreadsheetApp — , , Google Sheets.
, — , ( ) . getActiveSheet.
sheet.
, range — , . getRange. :
! 1.
15: getDisplayValues.
! getDisplayValues() , . , , - , , .
2.4.
, , , . :
//-
const dateCol = 0;
const timeCol = 1;
const typeCol = 2;
const nameCol = 3;
const teacherCol = 4;
2.
data , . .
for (var i in data)
{
let row = data[i];
let classDate = row[dateCol];
let classPeriod = row[timeCol];
let classType = row[typeCol];
let className = row[nameCol];
let classTeacher = row[teacherCol];
Logger.log("[DATE] " + classDate);
Logger.log("[PERIOD] " + classPeriod);
Logger.log("[TYPE] " + classType);
Logger.log("[NAME] " + className);
Logger.log("[TEACHER] " + classTeacher);
Logger.log("============================================");
}
for i data, i — , .
3: data i row — .
5-9: — . , row[dateCol] — dateCol.
5-9 , , , .
, , .
2.5.
,
function SetCalendar() {
//
const rowStart = 1;
const colStart = 1;
//
const colsCount = 5;
const rowsCount = 8;
//
var sheet = SpreadsheetApp.getActiveSheet();
//
var range = sheet.getRange(rowStart, colStart, rowsCount, colsCount)
var data = range.getDisplayValues();
//-
const dateCol = 0;
const timeCol = 1;
const typeCol = 2;
const nameCol = 3;
const teacherCol = 4;
for (var i in data)
{
let row = data[i];
let classDate = row[dateCol];
let classPeriod = row[timeCol];
let classType = row[typeCol];
let className = row[nameCol];
let classTeacher = row[teacherCol];
Logger.log("[DATE] " + classDate);
Logger.log("[PERIOD] " + classPeriod);
Logger.log("[TYPE] " + classType);
Logger.log("[NAME] " + className);
Logger.log("[TEACHER] " + classTeacher);
Logger.log("============================================");
}
}
, :
. 6.
, , , , . ?
:
. 7.
, . , , .
, , , .
, :
let savedDate = "";
for (var i in data)
{
let row = data[i];
let classDate = row[dateCol];
//...
if (classDate.trim() == "")
{
classDate = savedDate;
}
else
{
savedDate = classDate;
}
Logger.log("[DATE] " + classDate);
//...
Logger.log("============================================");
}
savedDate — .
. — , savedDate, savedDate.
2.6.
— getDisplayValues(), , , .
, Google Calendar, Date: - , - .
(. 2), dd.mm.yyyy, , , hh:mm-hh.mm.
, Date. Google Apps Script, - . , JS-, - - .
:
function extractTime(timeStr, dateStr)
{
let sepIdx = timeStr.indexOf(":");
let hoursStr = timeStr.substring(0, sepIdx);
let minsStr = timeStr.substring(sepIdx + 1);
sepIdx = dateStr.indexOf(".");
let dayStr = dateStr.substring(0, sepIdx);
let monthStr = dateStr.substring(sepIdx + 1, sepIdx + 3);
sepIdx = dateStr.indexOf(".", sepIdx + 1);
let yearStr = dateStr.substring(sepIdx + 1);
let t = new Date();
t.setHours(parseInt(hoursStr), parseInt(minsStr));
t.setYear(parseInt(yearStr));
t.setMonth(parseInt(monthStr) - 1, parseInt(dayStr));
return t;
}
function extractPeriod(periodStr, dateStr)
{
let sepIdx = periodStr.indexOf("-");
let fromStr = periodStr.substring(0, sepIdx);
let toStr = periodStr.substring(sepIdx + 1);
fromStr = fromStr.trim();
toStr = toStr.trim();
return {
from: extractTime(fromStr, dateStr),
to: extractTime(toStr, dateStr)
}
}
- , extractPeriod — , .
2.7. Google Calendar
,
let classTimeInfo = extractPeriod(classPeriod, classDate);
let classStartTime = classTimeInfo.from;
let classEndTime = classTimeInfo.to;
let info = ": " + classTeacher + "\n : " + classType;
var event = (CalendarApp.getCalendarsByName(""))[0].createEvent
(
className,
classStartTime,
classEndTime,
{
description: info
}
);
Utilities.sleep(50);
1-6: - , , .
, Google Calendar CalendarApp.
getCalendarsByName .
- getDefaultCalendar, . , - Google Calendar , . -, , .
, , , - , - , , , , , , , .
"", . getCalendarsByName "".
, , :
(CalendarApp.getCalendarsByName(""))[0]
- createEvent. :
- ( )
- Data — -
- Data — -
- — ( — description — )
— 50 . , , , Google Calendar , API .
3.
,
! , 2. , , , .
function extractTime(timeStr, dateStr)
{
let sepIdx = timeStr.indexOf(":");
let hoursStr = timeStr.substring(0, sepIdx);
let minsStr = timeStr.substring(sepIdx + 1);
sepIdx = dateStr.indexOf(".");
let dayStr = dateStr.substring(0, sepIdx);
let monthStr = dateStr.substring(sepIdx + 1, sepIdx + 3);
sepIdx = dateStr.indexOf(".", sepIdx + 1);
let yearStr = dateStr.substring(sepIdx + 1);
let t = new Date();
t.setHours(parseInt(hoursStr), parseInt(minsStr));
t.setYear(parseInt(yearStr));
t.setMonth(parseInt(monthStr) - 1, parseInt(dayStr));
return t;
}
function extractPeriod(periodStr, dateStr)
{
let sepIdx = periodStr.indexOf("-");
let fromStr = periodStr.substring(0, sepIdx);
let toStr = periodStr.substring(sepIdx + 1);
fromStr = fromStr.trim();
toStr = toStr.trim();
return {
from: extractTime(fromStr, dateStr),
to: extractTime(toStr, dateStr)
}
}
function SetCalendar() {
//
const rowStart = 1;
const colStart = 1;
//
const colsCount = 5;
const rowsCount = 8;
//
var sheet = SpreadsheetApp.getActiveSheet();
//
var range = sheet.getRange(rowStart, colStart, rowsCount, colsCount)
var data = range.getDisplayValues();
//-
const dateCol = 0;
const timeCol = 1;
const typeCol = 2;
const nameCol = 3;
const teacherCol = 4;
let savedDate = "";
for (var i in data)
{
let row = data[i];
let classDate = row[dateCol];
let classPeriod = row[timeCol];
let classType = row[typeCol];
let className = row[nameCol];
let classTeacher = row[teacherCol];
if (classDate.trim() == "")
{
classDate = savedDate;
}
else
{
savedDate = classDate;
}
let classTimeInfo = extractPeriod(classPeriod, classDate);
let classStartTime = classTimeInfo.from;
let classEndTime = classTimeInfo.to;
let info = ": " + classTeacher + "\n : " + classType;
var event = (CalendarApp.getCalendarsByName(""))[0].createEvent
(
className,
classStartTime,
classEndTime,
{
description: info
}
);
Utilities.sleep(50);
}
}
4.
- — , , , ( ). , API Google Sheets Google Apps Script , ;
- JavaScript, , - .
私は建設的な批判を受け入れます。欠点を指摘し、記事で何を改善し、何を変更できるかをアドバイスしていただければ幸いです。
次に読むべきこと
- アプリスクリプトの概要
- アプリスクリプト:カレンダー
- アプリスクリプト:スプレッドシート