완성된 코드를 공유해 주실 수 있으신가요?
354
投稿した質問数 1
안녕하세요, 강의 잘 듣고 있습니다.
혼자 하려고 하니, 코드 오류가 일어나거나 이메일 본문과 첨부파일이 분리되어 오는데,완성된 코드를 공유해 주실 수 있으신가요?
제가 작성한 코드와 비교해 보고 싶습니다.

回答 1
0
안녕하세요 정우님.
신규 입사자 코드 첨부합니다.
function myFunction() {
const sheets = SpreadsheetApp.getActiveSpreadsheet();
const list = sheets.getSheetByName('list');
const lastRowNo = list.getLastRow();
const folderId = '폴더 ID';
const folder = DriveApp.getFolderById(folderId);
const files = folder.getFiles();
const fileMap = new Map();
const inlineImages = {};
while (files.hasNext()) {
let file = files.next();
const flieName = file.getName();
fileMap.set(flieName, file);
inlineImages[flieName] = file;
}
const imageFile = DriveApp.getFileById('파일 ID');
inlineImages['megaphone'] = imageFile;
let allMembers = [];
for (let i = 2; i < lastRowNo + 1; i++) {
const name = list.getRange(i, 1).getValue();
const division = list.getRange(i, 2).getValue();
const department = list.getRange(i, 3).getValue();
const team = list.getRange(i, 4).getValue();
const link = list.getRange(i, 5).getValue();
const profile = list.getRange(i, 6).getValue();
let memberInfo = { name, division, department, team, link };
if (fileMap.has(profile) === true) {
memberInfo.img = `cid:${profile}`;
}
allMembers.push(memberInfo);
}
const reduceMembers = allMembers.reduce((acc, cur)=> {
const index = acc.findIndex(f => f.division === cur.division);
if (index === -1) {
// 기존에 없는 부문이므로 새로 추가
const newDivision = {
division: cur.division,
members: [{...cur}],
}
return [...acc, newDivision];
}
// 이미 있는 부분
const prevData = {...acc[index]};
prevData.members.push({...cur});
const updateArr = [...acc];
updateArr[index] = prevData;
return updateArr;
}, []);
const htmlFile = HtmlService.createTemplateFromFile('email');
htmlFile.data = reduceMembers;
const htmlBody = htmlFile.evaluate().getContent();
MailApp.sendEmail({
to: '본인 이메일 주소',
subject: '신규입사자 소개합니다',
htmlBody,
inlineImages,
});
}
0
감사합니다.
실행 시 아래와 같은 오류가 뜨는데 혹시 어떤 문제일까요?
Exception: Unexpected error while getting the method or property sendEmail on object MailApp.
myFunction

0
MailApp에 전달되는 object 를 로그로 찍어보시면 좋겠네요.
// 이 부분을 아래처럼 변경해보세요.
MailApp.sendEmail({
to: '본인 이메일 주소',
subject: '신규입사자 소개합니다',
htmlBody,
inlineImages,
});
// 변경된 코드
const mailObj = {
to: '본인 이메일 주소',
subject: '신규입사자 소개합니다',
htmlBody,
inlineImages,
};
console.log(mailObj);
MailApp.sendEmail(mailObj);
이렇게 실행했을 때 mailObj 로그가 찍히는것부터 봐보세요.
데이터가 잘못되었을 수 있어요.
[과제] 연습문제 쿼리 작성했습니다!
0
8
1
동영상 오류
0
33
2
매니패스트 JSON 전문
0
45
5
6-1. 강의 최종 과제 제출합니다.
0
54
3
3-13 리텐션 과제 제출합니다
0
111
3
3-13. 리텐션 연습과제 제출합니다.
0
84
4
최종 과제 제출
0
69
3
Weekly Retention 과제 작성하였습니다.
0
62
2
3-10 강의 14분경 코호트 해석 질문드립니다.
0
75
2
Weekly 및 Monthly Retention 과제 제출합니다.
0
72
2
[과제] 퍼널 쿼리 PIVOT 테이블 작성
0
73
2
최종 과제 제출
0
142
3
섹션2 강의들이 하얀 화면만 나오고 영상이 보이지 않아요.
0
120
1
ga4/gtm 티스토리 연동 디버깅
0
87
1
마케터를 위한 즐겨찾기/북마크 구글 sheet 링크는 어디서 확인해야 할까요?
0
117
2
BigQuery 활용편 18강 질문있습니다!
0
111
1
리텐션 공부하다가 궁금한게 생겨 질문드립니다
0
116
2
안녕하세요 강사님 코호트 쿼리 공부하다가 의문점이 생겨서 문의드립니다
0
107
2
biquery 테이블 생성 오류 이슈
0
105
2
광고 입찰가 관련 질문
0
105
2
입찰전략과 과금방식의 차이
0
127
1
구글애즈 타겟팅 제외설정
1
147
2
구글애즈 검색광고
0
117
2
동일하게 쿼리를 작성했는데 화면과 다른 값이 나옵니다
0
110
2

