소개
이번에는 디스코드를 연동하여 2시간마다 무엇을 했는지 확인하는 메세지가 오도록 만들었습니다. 메세지에는 구글 폼이 포함되어 있어 해당 링크를 통해 한 일, 만족도, 집중도 등을 넣을 수 있습니다.
진행 방법
먼저 구글폼과 구글 시트를 생성해주고, 구글 캘린더도 하나 새로 생성해줍니다.
[워크플로우1]
워크플로우1은 디스코드로 2시간마다 메세지를 받고 구글 폼을 작성하도록 하는 작업입니다. 전체 워크플로우 흐름은 아래 이미지와 같습니다.
1) Cron Expression은 10~20시 사이에 2시간 간격으로 월~토요일 사이에 메세지가 오도록 했습니다. 그리고 시간은 서울을 기준으로 설정해주었습니다.
2) Code 부분에는 시간을 계산해주고, 폼을 연결해주는 코드가 작성되어있습니다. // Google Form URL 생성 부분에 아래 밑줄 부분을 수정해줘야 합니다. baseUrl에는 구글 폼을 게재한 링크를 넣어줍니다.
날짜와 시간을 넣어주시 위해서는 아래 양식 미리 작성하기를 통해 날짜와 시간을 넣어주고, 해당 링크에서 변수를 찾아 바꿔 넣어줍니다.
const baseUrl = "https://docs.google.com/forms/d/e/1FAIpQLSdBQRrwKhHNOIQN-YDeURl418Z3BHzaGyuMEg-fNGr2ehH7hw/viewform"; const params = new URLSearchParams({ 'usp': 'pp_url', 'entry.930731770': dateStr, // 날짜 필드 'entry.1352067489': timeStr // 시간 필드 });
아래는 2.Code의 전체 코드 입니다.
export const code = async (inputs) => {
// 한국 시간 (UTC+9) 기준으로 현재 시간 가져오기
const now = new Date();
const koreaTime = new Date(now.toLocaleString("en-US", { timeZone: "Asia/Seoul" }));
// 날짜 포맷: YYYY-MM-DD
const year = koreaTime.getFullYear();
const month = String(koreaTime.getMonth() + 1).padStart(2, '0');
const day = String(koreaTime.getDate()).padStart(2, '0');
const dateStr = `${year}-${month}-${day}`;
// 시간을 2시간 단위로 반올림
let hours = koreaTime.getHours();
const minutes = koreaTime.getMinutes();
// 현재 시간을 분으로 환산해서 2시간(120분) 단위로 반올림
const totalMinutes = hours * 60 + minutes;
const roundedTotalMinutes = Math.round(totalMinutes / 120) * 120;
let roundedHours = Math.floor(roundedTotalMinutes / 60) % 24;
roundedHours = String(roundedHours).padStart(2, '0');
const timeStr = `${roundedHours}:00`;
// Google Form URL 생성
const baseUrl = "https://docs.google.com/forms/d/e/1FAIpQLSdBQRrwKhHNOIQN-YDeURl418Z3BHzaGyuMEg-fNGr2ehH7hw/viewform";
const params = new URLSearchParams({
'usp': 'pp_url',
'entry.930731770': dateStr, // 날짜 필드
'entry.1352067489': timeStr // 시간 필드
});
const prefilledUrl = `${baseUrl}?${params.toString()}`;
return {
url: prefilledUrl,
date: dateStr,
time: timeStr
};
};3) 디스코드를 연동하여 원하는 메세지가 오도록 설정합니다.
노랑색 박스 부분에 디스코드 계정의 웹훅 URL을 넣어줍니다. (본인 서버 - 원하는 채널 - 톱니바퀴 모양의 채널 편집 - 연동 - 웹후크 - 포스팅 중인 봇 클릭하여 하단의 웹후크 URL 복사)
이후 봇의 이름을 작성해주고 원하는 메세지를 작성해줍니다.
결과와 배운 점
한 시간마다 또는 원하는 시간 간격으로 알람이 오게 하려면, 2.Code의 코드를 지피티 또는 제미나이에게 주고 몇 시간 간격을 수정해달라고 하면 됩니다.
다음 게시물은 답변을 제출하면 자동으로 캘린더와 구글 시트에 해당 업무 진행 사항을 저장하도록 하는 방법을 작성해보겠습니다.
도움 받은 글 (옵션)
Hero님의 Activepieces 핸드북