Google 설문지에서 일정을 선택하고 Google 캘린더에 자동 등록
17964 단어 googleformGoogleAppsScript
전용 캘린더를 만들어 ↑의 google form의 선택과 같이 스케줄 등록해 둡니다. 내 캘린더에서도 괜찮다고 생각합니다. 나중에 날마다 타이틀명으로 검색하므로 같은 날의 예정은 별명으로 해 둔다.
설정과 공유로 가서 아래로 스크롤하면 캘린더 ID를 확인할 수 있습니다.
Google 양식으로 돌아가서 ︙ 표시에서 '스크립트 편집기'를 선택합니다.
이렇게 만들었습니다.
코피페용입니다.//편집을 추가한 곳이 각각의 환경에서 편집이 필요한 곳입니다.
//カレンダーID
var CAL_ID = '[email protected]'; //編集
//日付とイベントタイトル
var CAL_EVENT_DATE1 = '2020/11/16'; //編集
var CAL_EVENT_DATE2 = '2020/11/17'; //編集
var CAL_EVENT_DATE3 = '2020/11/18'; //編集
var CAL_EVENT_TITLE1 = '説明会'; //編集
var CAL_EVENT_TITLE2 = '説明会2'; //編集
function myFunction(e) {
function addCalendar(date, title) {
// Form申し込みした人のアドレスを取得
var address = e.response.getRespondentEmail();
//カレンダーにユーザー追加
var cal = CalendarApp.getCalendarById(CAL_ID);
var events = cal.getEventsForDay(new Date(date), {
search: title,
});
var event = events[0];
event.addGuest(address);
}
var items = e.response.getItemResponses();
var result = [];
for (var i = 0; i < items.length; i++) {
var item = items[i];
var question = item.getItem().getTitle();
var answer = item.getResponse();
result.push([question, answer]);
}
if (result[0][1] == '11月16日(月) 10時~11時' ) //編集
addCalendar(CAL_EVENT_DATE1,CAL_EVENT_TITLE1) //編集
if (result[0][1] == '11月17日(火) 11時~12時' ) //編集
addCalendar(CAL_EVENT_DATE2,CAL_EVENT_TITLE1) //編集
if (result[0][1] == '11月18日(水) 10時~11時' ) //編集
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE1) //編集
if (result[0][1] == '11月18日(水) 13時~14時' ) //編集
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE2) //編集
}
시계 마크 같은 곳에서 프로젝트를 엽니다. 오른쪽 하단의 "트리거 추가"에서 트리거를 추가합니다.
이벤트 소스 선택은 "양식에서"
이벤트의 종류를 선택은 「폼 제출시」를 선택해 보존.
허가를 요구되기 때문에 허가한다.
스크립트는 직접 실행하면 실패하지만 문제 없다.
파일→보기→로그를 클릭합니다.
로그를 보는 것이 아니라 'Apps Script 대시보드'에 가고 싶었다. 이 대시보드에서 실행 결과가 성공 또는 실패를 확인할 수 있기 때문에 열어 둔다.
폼의 결과를 스프레드시트에서 얻고 싶을 때는 폼의 편집으로 「응답」에 가서 스프레드시트의 마크를 클릭해 작성해 둔다. (조사해 보면 스프레드 시트에 모인 데이터에서 google 캘린더에 등록하는 방법도있는 것 같습니다)
편집 상태에서 오른쪽 상단의 양식 제출을 클릭하고 링크를 얻고 실제로 양식에 응답하고 테스트합니다.
테스트 중에는 여러 번 편집하여 전송하므로 "송신 후 편집"을 해두면 편리.
실제로 양식을 제출하여 이전의 Apps Script 대시보드를 확인합니다. 실패할 때는 코드에 Logger.log(result)등 써 조사하면 좋다고 생각한다.
캘린더에 실제로 등록되는 것을 여러가지 패턴으로 확인하고 끝.
이쪽을 참고로 했습니다.
htps : // m / mfykm / ms / 5709b3186bfc506605f6
htps //w w. p-p 등 c 치세. 네/2017/11 HTML
기타
잘 안 갈 때는 Logger.log()를 사용하여 확인한다.
Logger.log(result)를 확인하면 이런 느낌.[[参加する日程を選んで送信してください, 11月17日(火) 15時~16時], [事前の質問, あああ]]
result[0][1]로 날짜와 시간의 부분이 잡혀 있는지 확인한다.
권한 오류가 나올 때
権限エラー
Exception: スクリプトにはその操作を行う権限がありません。その操作を行うには
「(https://www.googleapis.com/auth/calendar ||
https://www.googleapis.com/auth/calendar.readonly ||
https://www.google.com/calendar/feeds)」権限が必要です。
표시에서 「매니페스트 파일 표시」를 선택.
oauthScopes를 추가하여 xxx 부분에 부족하다고 말한 https://~를 모두 추가한다.
파일 → 프로젝트 속성 → 범위에 추가한 항목이 있는지 확인합니다.
코드에 나중에 무언가를 추가하거나 하지 않으면 기본은 일어나지 않을 것이다. .
여러 참가가 가능한 경우
다른 내용의 세션이 열려 있고 어느 것에 참가해도 좋은 경우는 체크 박스로 해 코드를 조금 재기록한다.
//カレンダーID
(省略)
//32行目以降あたりに追加。
result = result[0][1]
//ログに出して確認
Logger.log(result) //[11月16日(月) 10時~11時, 11月17日(火) 11時~12時, 11月18日(水) 10時~11時, 11月18日(水) 13時~14時]
Logger.log(result[0]) //11月16日(月) 10時~11時
Logger.log(result[1]) //11月17日(火) 11時~12時
Logger.log(result[2]) //11月18日(水) 10時~11時
Logger.log(result[3]) //11月18日(水) 13時~14時
//result[x]に書き換える
if (result[0] == '11月16日(月) 10時~11時' )
addCalendar(CAL_EVENT_DATE1,CAL_EVENT_TITLE1)
if (result[1] == '11月17日(火) 11時~12時' )
addCalendar(CAL_EVENT_DATE2,CAL_EVENT_TITLE1)
if (result[2] == '11月18日(水) 10時~11時' )
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE1)
if (result[3] == '11月18日(水) 13時~14時' )
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE2)
}
Reference
이 문제에 관하여(Google 설문지에서 일정을 선택하고 Google 캘린더에 자동 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/fabula/items/23f016fdd252b691379c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
잘 안 갈 때는 Logger.log()를 사용하여 확인한다.
Logger.log(result)를 확인하면 이런 느낌.
[[参加する日程を選んで送信してください, 11月17日(火) 15時~16時], [事前の質問, あああ]]
result[0][1]로 날짜와 시간의 부분이 잡혀 있는지 확인한다.권한 오류가 나올 때
権限エラー
Exception: スクリプトにはその操作を行う権限がありません。その操作を行うには
「(https://www.googleapis.com/auth/calendar ||
https://www.googleapis.com/auth/calendar.readonly ||
https://www.google.com/calendar/feeds)」権限が必要です。
표시에서 「매니페스트 파일 표시」를 선택.
oauthScopes를 추가하여 xxx 부분에 부족하다고 말한 https://~를 모두 추가한다.
파일 → 프로젝트 속성 → 범위에 추가한 항목이 있는지 확인합니다.
코드에 나중에 무언가를 추가하거나 하지 않으면 기본은 일어나지 않을 것이다. .
여러 참가가 가능한 경우
다른 내용의 세션이 열려 있고 어느 것에 참가해도 좋은 경우는 체크 박스로 해 코드를 조금 재기록한다.
//カレンダーID
(省略)
//32行目以降あたりに追加。
result = result[0][1]
//ログに出して確認
Logger.log(result) //[11月16日(月) 10時~11時, 11月17日(火) 11時~12時, 11月18日(水) 10時~11時, 11月18日(水) 13時~14時]
Logger.log(result[0]) //11月16日(月) 10時~11時
Logger.log(result[1]) //11月17日(火) 11時~12時
Logger.log(result[2]) //11月18日(水) 10時~11時
Logger.log(result[3]) //11月18日(水) 13時~14時
//result[x]に書き換える
if (result[0] == '11月16日(月) 10時~11時' )
addCalendar(CAL_EVENT_DATE1,CAL_EVENT_TITLE1)
if (result[1] == '11月17日(火) 11時~12時' )
addCalendar(CAL_EVENT_DATE2,CAL_EVENT_TITLE1)
if (result[2] == '11月18日(水) 10時~11時' )
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE1)
if (result[3] == '11月18日(水) 13時~14時' )
addCalendar(CAL_EVENT_DATE3,CAL_EVENT_TITLE2)
}
Reference
이 문제에 관하여(Google 설문지에서 일정을 선택하고 Google 캘린더에 자동 등록), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fabula/items/23f016fdd252b691379c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)