Google 설문지에서 일정을 선택하고 Google 캘린더에 자동 등록

google form에서 일정을 선택하고 제출하면 신청한 사람의 캘린더에 등록될 때까지 했으므로 메모해 둡니다. 같은 내용의 설명회를 복수회 실시, 어느 쪽인가 1개에 참석해 주었으면 하는 패턴입니다. 여러 참가가 가능한 패턴은 후반에 추기했습니다.


전용 캘린더를 만들어 ↑의 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)

}

좋은 웹페이지 즐겨찾기