커뮤니티
포인트
쿠폰
내 강의실
국비 신청 내역
증명서
계정
로그아웃
학습 질문
개발 일지
나의 활동
답변 완료
왜 저는 실행이 되지 않는걸까요?
[왕초보] 칼퇴를 부르는 파이썬 업무 자동화 v0
5주차
북마크
장*혜
댓글
7
추천
0
조회수
30
조회수
30
답변 완료

* 겪고 있는 문제 상황을 최대한 자세하게 작성해주세요.

* 문제 해결을 위해 어떤 시도를 해보았는지 구체적으로 함께 알려주세요.



함수 확인 한번 부탁드립니다

코드 스니펫 그대로 복사해서 썼는데 왜 실행이 안될까요?


보고 계신 화면 전체를

스파르타 즉문즉답

캡처해 주시면, 튜터님들이 빠르게 상황을 이해할 수 있어요.

자동화를 누르고 일정 예약하기를 클릭하니까 스크립트 함수를 찾을 수 없다고 나옵니다





// 구글 폼을 제출하면 추적하여 이메일 알림 발송하는 함수

function onFormSubmit(e) {


    // 구글 폼의 응답을 찾아내서 변수로 지정

    let formResponse = e.values;


    // console.log(formResponse);


    let timeStamp = formResponse[0];

    let email = formResponse[1];

    let name = formResponse[2];



    let birth = formResponse[3];

    let phone = formResponse[4];

    let job = formResponse[5];

    let requestDate = formResponse[6];

    let requestTime = formResponse[7];


    // 메일 발송에 필요한 정보 찾기

    let myMail = '내 이메일 주소';

    let mailTitle = '[면접 일정 확인 요청] 지원자가 구글 폼을 작성했어요!';


    // HTML 메일 형태로 데이터 담기  

    let mailBody = `<div>

                        <h3>${mailTitle}</h3>

                        <p>작성시간 : ${timeStamp}</p>

                        <p>성함 : ${name}</p>

                        <p>생년월일 : ${birth}</p>

                        <p>희망직무 : ${job}</p>

                        <p>이메일 : ${email}</p>

                        <p>전화번호 : ${phone}</p>

                        <p>면접 희망일자 : ${requestDate}</p>

                        <p>면접 희망시각 : ${requestTime}</p>

                        <a href="내 구글 시트 URL">면접 신청 시트 확인하기</a>

                    </div>`;


    // 메일로 데이터 전송

    sendEmail(myMail, mailTitle, mailBody);

}


// 지메일을 보내는 함수

function sendEmail(recipient, subject, body) {


    MailApp.sendEmail({

        to: recipient,

        subject: subject,

        htmlBody: body

    });

}



// 구글 시트가 열리면 실행되는 함수

function onOpen() {

  let ui = SpreadsheetApp.getUi();

  ui.createMenu('자동화')

    .addItem('일정 예약하기', 'createCalendarSchedule')

    .addToUi();

}



// 구글 일정 예약하기 버튼을 누르면 실행되는 함수

function createCalendarSchedule() {

    let spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

    let sheet = spreadsheet.getActiveSheet();


    let startRow = 2;

    let numRows = sheet.getLastRow() - 1;

    let dataRange = sheet.getRange(startRow, 1, numRows, 10);

    let data = dataRange.getValues();


    console.log(data);


    for (let i = 0; i < data.length; i++) {

        let row = data[i];

        // console.log(row);


        let timeStamp = row[0];

        let email = row[1];

        let name = row[2];

        let birth = row[3];

        let phone = row[4];

        let job = row[5];

        let requestDate = row[6];

        let requestTime = row[7];

        let interviewDate = row[8];

        let isReserved = row[9];


        if (interviewDate === '') {

            console.log('일정 예약 실패 : 면접 일정 데이터가 비어있습니다');

            continue;

        }

        if (isReserved === '완료') {

            console.log('일정 예약 실패 : 이미 예약이 완료된 일정입니다');

            continue;

        }


        interviewDate = new Date(interviewDate);

        // 날짜와 시간을 문자열로 변환하여 원하는 형식으로 출력

        let formattedDate = Utilities.formatDate(interviewDate, Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm');


        // HTML 메일 형태로 데이터 담기

        let office = '서울특별시 르탄대로 11길 8';

        let mailTitle = '안녕하세요. [대박기획]입니다. 제출해주신 면접 일정이 확정되어 공유드립니다.';

        let admin = '김대박';


        let mailBody = `<div>

                        <h3>${mailTitle}</h3>

                        <p>성함 : ${name}</p>

                        <p>희망직무 : ${job}</p>

                        <p>면접일자 : ${formattedDate}</p>

                        <p>면접장소 : ${office}</p>

                        <p>인사 담당자 ${admin} 드림</p>

                      </div>`


        // 메일로 고객에게 데이터 전송

        sendEmail(email, '[대박기획] 확정된 면접 일정 공유드립니다.', mailBody);

    }

취소
 공유
취소
댓글 0
댓글 알림
나의얼굴