Slack에서 이메일로 자동 전송해 보았습니다.

소개



사내 커뮤니케이션 도구로 Slack이 도입되어 사내 커뮤니케이션이 다소 활성화되어 왔습니다.
Slack의 App이나 워크플로 빌더를 사용해 기존 프로세스를 편하게 하려고 생각하는 사람도 나오고, 툴이 바뀌면 사람도 바뀌지 말라고 실감하고 있습니다.

그런 중에서도 의뢰는 「사내 메일」이라고 하는 문화는 남아 있어, 마지막은 누군가가 메일을 보내야 합니다. . .
그래서 Slack에서 간소화한 신청 프로세스의 신청 내용을 Slack에서 사내 메일로 자동 송신하도록 해 보았습니다.

환경



이번에는 이하의 환경을 이용했습니다.

Slack (Outgoing Webhook)
Sendgrid
Google Apps Script(Node.js)

순서대로 설정 내용을 기재합니다.

1.Slack



채널에서 특정 키워드에 반응하는 Outgoing Webhook을 설정합니다.
Outgoing Webhook은 Slack의 App 관리 페이지에서 "App 디렉토리 찾기"에서 찾을 수 있습니다.

1-1. 설정 내용



채널: Outgoing Webhook을 이동할 채널을 지정합니다.
비공개 채널을 지정할 수 없습니다.

트리거되는 단어: 트리거가 될 키워드를 지정합니다.

URL: 나중에 만들 Google Apps Script Current web app URL:를 지정합니다.



2.Sendgrid



메일 배송은 Sendgrid를 사용했습니다.
htps : // 선 dg 리 d. 케케. 이. jp/

자세한 내용은 생략하지만, 필요한 것은 API 키입니다.
대시보트의 'Settings' - 'API Keys'에서 Key를 만듭니다.
참고: 키는 생성 시에만 표시됩니다.

3. Google Apps Script



Slack 게시물을 받고 이메일을 보내는 스크립트는 Google Apps Script에 구축되었습니다.

3-1. 환경 변수



환경 변수는 다음을 설정합니다.
환경 변수 설정은 Google Apps Script의 '파일', '프로젝트 속성', '스크립트 속성'에서 설정할 수 있습니다.

■VERIFY_TOKEN
검증용 토큰입니다. 자신이 설정한 Outgoing Webhook에서 POST인지 확인합니다.
이것을 설정하지 않으면 어디서나 POST할 수 있게 되어 버립니다.
설정값은 Outgoing Webhook의 설정 페이지에 있는 Token을 지정합니다.

■SEND_GRID_ENDPOINT
Sendgrid URL을 지정합니다.https://api.sendgrid.com/v3/mail/send
■SEND_GRID_API_KEY
Sendgrid 대시보드에서 검색된 API 키를 지정합니다.

3-2. 스크립트


doPost(POST、Verify処理)sendMail(メール送信処理) 의 2개로 나누고 있습니다.
메일의 to , subject , from_name , fromPropertiesService.getScriptProperties().getProperty('XXX') 에서 환경 변수를 검색 중입니다.

code.gs
function doPost(e) {
  var verify_token = PropertiesService.getScriptProperties().getProperty('VERIFY_TOKEN');
  if (verify_token != e.parameter.token) {
    throw new Error("invalid token.");
  }

  var message = e.parameter.text;  
  sendEmail(message);
}

function sendEmail(message){
  var sendgrid_endpoint = PropertiesService.getScriptProperties().getProperty('SEND_GRID_ENDPOINT');
  var sendgrid_apikey = PropertiesService.getScriptProperties().getProperty('SEND_GRID_API_KEY');
  var to = "送信先メールアドレス";
  var subject = "メールタイトル"; 
  var from_name = "送信者名";
  var from = "送信元メールアドレス";

  var body = {
    "personalizations": [
      {
        "to": [
          {
            "email": to
          }
        ],
        "subject": subject
      }
    ],
    "from": {
      "email": from,
      "name" : from_name
    },
    "content": [
      {
        "type": "text/html",
        "value": message
      }
    ]
  }
  var payload = JSON.stringify(body);
  UrlFetchApp.fetch(sendgrid_endpoint, {
    method: 'POST',
    headers: { "Content-Type": 'application/json',
             "Authorization": "Bearer "+ sendgrid_apikey},
    payload: payload
  });
}

3-3. 활성화



Google Apps Script 메뉴의 '게시' - '웹 애플리케이션 배포...'에서 스크립트를 활성화합니다.Who has access to the app:Anyone, even anonymous 를 선택하십시오.



여기에 출력되는 Current web app URL:를 1-1.의 URL로 지정합니다.
이것으로 설정이 완료됩니다.

4. 동작 확인



Outgoing Webhook에서 설정한 채널에 引き金となる言葉를 게시하여 콘텐츠가 이메일로 전송되는지 확인합니다.
제대로 전송되지 않으면 각 설정값과 Google Apps Script 로그를 확인해 보세요.

마지막으로



Slack 게시물을 이메일로 자동 제출해 보았습니다.
이번에는 Verify를 위해 token을 사용했지만 Verify조차 불필요하면 변수없이도 좋을 것 같습니다.
보안에 충분히 주의하여 사용합시다.

좋은 웹페이지 즐겨찾기