Google 양식에 작성된 날짜를 GAS로 처리하기 위한 비망록
면담이나 MTG를 개최하기 위해 열거한 후보일에 대해, 자신의 Google Calendar에서 일정이 들어 있는지 확인하는 스크립트를 Google Apps Script(이하, GAS)로 작성했습니다. 이 기사는 날짜를 다루는 방법에 관한 비망록입니다.
(주) Google Form에 관한 정보는 생략합니다.
Google Form의 콘텐츠 가져오기
Google Form에서 작성한 내용은 GAS에서 다음과 같이 얻을 수 있습니다.
자세한 내용은 이 기사를 참조하십시오.
Googleform에서 slack 알림 설정 방법
var itemResponse = e.response.getItemResponses();
for (var j = 0; j < itemResponse.length; j++){
var formData = itemResponse[j];
var title = formData.getItem().getTitle();
var response = formData.getResponse();
switch (title) {
case "氏名":
name = response;
break;
case "メールアドレス":
mailaddress = response;
break;
// 略 //
default:
break;
}
}
이 때, 취득되는 일자·시간은 GAS상에서는 문자열 취급이 됩니다.
이대로 캘린더의 함수에 대입해도 날짜로서 인식되지 않습니다. 변환해야합니다.
Data 객체로 변환
시작하기 전에 획득한 날짜와 시간이 GAS에서 어떻게 출력되는지 확인합니다.Logger.log()
에 일시대입하면 다음과 같이 출력됩니다.
날짜: 2021-01-12
시간: 13:00
날짜는 -
이고 시간은 :
로 연결되어 있음을 알 수 있습니다.
이 문자열을 그대로 Date 개체에 넣을 수는 있지만 CalendarApp은 날짜로 처리할 수 없습니다.
(invalid~ 라는 에러가 나올 것입니다.)
조사해 보면, Date 객체로 포맷에 따라서는 변환할 수 없는 것이 있는 것 같습니다.
(참고: Google Apps Script 날짜 문자열 변환 )
다음 형식과 일치하도록 스크립트에서 조정합니다.
2021-01-12T13:00:00.000"
그런 다음 Date 객체에 할당합니다.
var date= new Date("2021-01-12T13:00:00.000");
주의
출력한 시간이 의도하지 않은 경우 스크립트의 시간대가 Asia/Tokyo
가 아닐 수 있습니다.
이 경우 appsscript.json
라는 파일에 나열된 표준 시간대를 Asia/Tokyo
로 변경합니다.appsscript.json
는 프로젝트 설정에서 「appsscript.json」マニフェスト ファイルをエディタで表示する
를 체크하면 표시됩니다.
체크 후, 다음과 같이 변경하면 문제 없습니다.
참고 : Google Apps Script에서 날짜의 시간대를 일본으로 수정하는 방법
CalendarApp
Google 캘린더를 GAS로 처리할 때 일부 스크립트를 소개합니다.
공식 사이트
첫째, 일정을 설명하는 나열된 일정을 검색하는 캘린더의 ID를 가져옵니다.
캘린더 ID는 설정 > 캘린더 통합에 있습니다.
getCalendarById
를 사용합니다.
var cals = CalendarApp.getCalendarById("Calendar ID");
이곳은 첫 번째 희망, 두 번째 희망과 차례로 일정이 들어 있는지 확인하고, 그렇지 않으면 일정을 추가하는 스크립트입니다.
Google 캘린더에 포함된 약속을 얻으려면 getEvents()
를 사용하고 약속을 추가하려면 createEvent()
를 사용합니다.
for(var i=0; i < candidate_days.length; i++){
//Dateオブジェクトに変換
var start_date= new Date(candidate_days[i]+"T"+candidate_start_time+":00.000");
var end_date= new Date(candidate_days[i]+"T"+candidate_end_time+":00.000");
// 先約があるかどうか調べる
if(cals.getEvents(start_date, end_date).length==0){
//予約情報をカレンダーに追加
var thing = name+"さん 面談予約";
var event = cals.createEvent(thing, start_date, end_date);
break
} else {
var res = name+"さん 第"+(i+1)+"希望に先約がありました。";
Logger.log(res);
}
}
선약이 없으면 다음과 같이 약속이 추가됩니다.
참고
var itemResponse = e.response.getItemResponses();
for (var j = 0; j < itemResponse.length; j++){
var formData = itemResponse[j];
var title = formData.getItem().getTitle();
var response = formData.getResponse();
switch (title) {
case "氏名":
name = response;
break;
case "メールアドレス":
mailaddress = response;
break;
// 略 //
default:
break;
}
}
시작하기 전에 획득한 날짜와 시간이 GAS에서 어떻게 출력되는지 확인합니다.
Logger.log()
에 일시대입하면 다음과 같이 출력됩니다.날짜: 2021-01-12
시간: 13:00
날짜는
-
이고 시간은 :
로 연결되어 있음을 알 수 있습니다.이 문자열을 그대로 Date 개체에 넣을 수는 있지만 CalendarApp은 날짜로 처리할 수 없습니다.
(invalid~ 라는 에러가 나올 것입니다.)
조사해 보면, Date 객체로 포맷에 따라서는 변환할 수 없는 것이 있는 것 같습니다.
(참고: Google Apps Script 날짜 문자열 변환 )
다음 형식과 일치하도록 스크립트에서 조정합니다.
2021-01-12T13:00:00.000"
그런 다음 Date 객체에 할당합니다.
var date= new Date("2021-01-12T13:00:00.000");
주의
출력한 시간이 의도하지 않은 경우 스크립트의 시간대가
Asia/Tokyo
가 아닐 수 있습니다.이 경우
appsscript.json
라는 파일에 나열된 표준 시간대를 Asia/Tokyo
로 변경합니다.appsscript.json
는 프로젝트 설정에서 「appsscript.json」マニフェスト ファイルをエディタで表示する
를 체크하면 표시됩니다.체크 후, 다음과 같이 변경하면 문제 없습니다.
참고 : Google Apps Script에서 날짜의 시간대를 일본으로 수정하는 방법
CalendarApp
Google 캘린더를 GAS로 처리할 때 일부 스크립트를 소개합니다.
공식 사이트
첫째, 일정을 설명하는 나열된 일정을 검색하는 캘린더의 ID를 가져옵니다.
캘린더 ID는 설정 > 캘린더 통합에 있습니다.
getCalendarById
를 사용합니다.
var cals = CalendarApp.getCalendarById("Calendar ID");
이곳은 첫 번째 희망, 두 번째 희망과 차례로 일정이 들어 있는지 확인하고, 그렇지 않으면 일정을 추가하는 스크립트입니다.
Google 캘린더에 포함된 약속을 얻으려면 getEvents()
를 사용하고 약속을 추가하려면 createEvent()
를 사용합니다.
for(var i=0; i < candidate_days.length; i++){
//Dateオブジェクトに変換
var start_date= new Date(candidate_days[i]+"T"+candidate_start_time+":00.000");
var end_date= new Date(candidate_days[i]+"T"+candidate_end_time+":00.000");
// 先約があるかどうか調べる
if(cals.getEvents(start_date, end_date).length==0){
//予約情報をカレンダーに追加
var thing = name+"さん 面談予約";
var event = cals.createEvent(thing, start_date, end_date);
break
} else {
var res = name+"さん 第"+(i+1)+"希望に先約がありました。";
Logger.log(res);
}
}
선약이 없으면 다음과 같이 약속이 추가됩니다.
참고
var cals = CalendarApp.getCalendarById("Calendar ID");
for(var i=0; i < candidate_days.length; i++){
//Dateオブジェクトに変換
var start_date= new Date(candidate_days[i]+"T"+candidate_start_time+":00.000");
var end_date= new Date(candidate_days[i]+"T"+candidate_end_time+":00.000");
// 先約があるかどうか調べる
if(cals.getEvents(start_date, end_date).length==0){
//予約情報をカレンダーに追加
var thing = name+"さん 面談予約";
var event = cals.createEvent(thing, start_date, end_date);
break
} else {
var res = name+"さん 第"+(i+1)+"希望に先約がありました。";
Logger.log(res);
}
}
Reference
이 문제에 관하여(Google 양식에 작성된 날짜를 GAS로 처리하기 위한 비망록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/TakanoHori/items/71cd79a6998d63924efd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)