반응형
매일아침 신규입사자 정보를 메일로 받고싶다.
DB는 MSSQL이다.
MSSQL에서, 신규입사자 테이블에 입사일이 오늘인 사람의 데이터를 쿼리해온다.
신규입사자가 아니라도 매일매일 받고싶은 정보가 있을경우 사용가능.
SELECT id, name, phone, dept, join_date, status FROM dbo.new_employee
SELECT id, name, phone, dept, join_date, status FROM dbo.new_employee WHERE join_date = convert(varchar(10), getdate(), 120)
const address = 'mssql ip address';
const port = 'mssql port';
const user = 'mssql user';
const userPwd = 'mssql password';
const db = 'mssql database';
const dbUrl = `jdbc:sqlserver://${address}:${port};databaseName=${db}`;
function getUserDataFromMssql () {
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
var start = new Date();
var stmt = conn.createStatement();
stmt.setMaxRows(1000);
var results = stmt.executeQuery('SELECT id, name, phone, dept, join_date, status FROM dbo.new_employee WHERE join_date = convert(varchar(10), getdate(), 120)');
var numCols = results.getMetaData().getColumnCount();
var rows = new Array();
while (results.next()) {
var arr1 = new Array(numCols);
for (var col = 0; col < numCols; col++) {
arr1[col] = results.getString(col + 1);
}
Logger.log(arr1);
}
results.close();
stmt.close();
}
이제 가져온 데이터를 바탕으로,
메일을 보낼 html 양식을 생성한다.
const address = 'mssql ip address';
const port = 'mssql port';
const user = 'mssql user';
const userPwd = 'mssql password';
const db = 'mssql database';
const dbUrl = `jdbc:sqlserver://${address}:${port};databaseName=${db}`;
function getUserDataFromMssql () {
var conn = Jdbc.getConnection(dbUrl, user, userPwd);
var start = new Date();
var stmt = conn.createStatement();
stmt.setMaxRows(1000);
var results = stmt.executeQuery('SELECT id, name, phone, dept, join_date, status FROM dbo.new_employee WHERE join_date = convert(varchar(10), getdate(), 120)');
var numCols = results.getMetaData().getColumnCount();
var rows = new Array();
while (results.next()) {
var arr1 = new Array(numCols);
for (var col = 0; col < numCols; col++) {
arr1[col] = results.getString(col + 1);
}
rows.push(arr1);
Logger.log(arr1);
}
results.close();
stmt.close();
var message = `<p>${getTodayDate("-")} 일 입사자</p><br>`;
for ( i in rows) {
message += `<p>${rows[i][1]}(${rows[i][0]}) 부서 : ${rows[i][3]}</p><br>`
}
Logger.log(message);
sendEmail(null, `${getTodayDate("-")} 일 입사자`, message);
}
/**
* Send Email.
* 이메일을 이용한 Notify.
* @param {string} recipient = 받는사람
* @param {string} subject = 제목
* @param {string} body = 내용
* Ref = <https://spreadsheet.dev/send-html-email-from-google-sheets>
*/
function sendEmail(recipient, subject, body) {
var recipient = "whiseung@naver.com";
MailApp.sendEmail({
to: recipient,
subject: subject,
htmlBody: body
});
}
결과
이제 생성한 getUserDataFromMssql 함수를
time-driven 트리거로 생성하여 매일아침 메일로 전송할 수있도록 하면 된다.
반응형
'GCP > Apps Script' 카테고리의 다른 글
Apps Script로 생성한 웹페이지에서(웹앱 배포) 입력한 값을 Google Sheets에 저장하기 (0) | 2023.01.20 |
---|---|
Apps Script로 Google Sheets의 sheets들 index(목차) 만들기 (0) | 2023.01.13 |
Apps Script로 Google Sheets의 종속되는 Dropdown 만들기 (0) | 2023.01.12 |
Apps Script로 Sidebar를 이용한 이메일 전송 컴포넌트 개발 (0) | 2023.01.12 |
Apps Script로 Email 보내기 (HTML 양식) (0) | 2023.01.11 |