<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 수연 안</title>
    <description>The latest articles on DEV Community by 수연 안 (@syan).</description>
    <link>https://dev.to/syan</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F614217%2F994be9d9-9e7f-4737-8e7b-590dc1701879.png</url>
      <title>DEV Community: 수연 안</title>
      <link>https://dev.to/syan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/syan"/>
    <language>en</language>
    <item>
      <title>구글 앱스 스크립트 (Google Apps Script) 를 이용하여 메일로 구글 설문지 제출 알림 받기</title>
      <dc:creator>수연 안</dc:creator>
      <pubDate>Wed, 14 Jul 2021 12:07:41 +0000</pubDate>
      <link>https://dev.to/syan/google-apps-script-175e</link>
      <guid>https://dev.to/syan/google-apps-script-175e</guid>
      <description>&lt;p&gt;&lt;em&gt;google apps script 에 대한 설명 및 사용법은&lt;br&gt;
&lt;a href="https://dev.to/syan/google-apps-script-1-2j2m"&gt;이전 게시물&lt;/a&gt;에서 작성되어 생략합니다.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  1. 구글 설문지 준비
&lt;/h3&gt;

&lt;p&gt;구글 설문지를 생성합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VRRKT5V0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5lc3ozok78njo3ea47nx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VRRKT5V0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5lc3ozok78njo3ea47nx.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. 설문 조사
&lt;/h3&gt;

&lt;p&gt;구글 설문지를 이용하여 설문조사를 받습니다.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EgTavV4o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65ti0wo3gthwhybv5hux.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EgTavV4o--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/65ti0wo3gthwhybv5hux.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3. 설문 응답 확인
&lt;/h3&gt;

&lt;p&gt;설문지 응답 확인을 위한 구글 스프레드 시트 준비를 합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--klZFPlLD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/giqem6vi6ro3c52jaohq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--klZFPlLD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/giqem6vi6ro3c52jaohq.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  4. 스크립트 편집기 작성
&lt;/h3&gt;

&lt;p&gt;구글 스프레드 시트에서 스크립트 편집기에 들어갑니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sNvJl30e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s2r6x3194pb64gi6bn93.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sNvJl30e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s2r6x3194pb64gi6bn93.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  5. 구글 앱스 스크립트 내 소스코드 작성하기
&lt;/h3&gt;

&lt;p&gt;메일을 발송하는 소스코드를 작성합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JxtDOy8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/smlkcol6q4aiaufdb7nx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JxtDOy8z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/smlkcol6q4aiaufdb7nx.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  6. 트리거 메뉴
&lt;/h3&gt;

&lt;p&gt;왼쪽 메뉴바의 시계 아이콘으로 생긴 트리거 메뉴로 접근합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Oo4hwPXV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dp7hesrmg6gn48ttvbj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Oo4hwPXV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0dp7hesrmg6gn48ttvbj.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  7. 트리거 추가
&lt;/h3&gt;

&lt;p&gt;양식제출 즉시 소스코드가 실행될 수 있도록 트리거를 추가합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dY-PRrE7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xqwz9a493jh4nbfirnhz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dY-PRrE7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xqwz9a493jh4nbfirnhz.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  8. 트리거 생성 확인
&lt;/h3&gt;

&lt;p&gt;트리거가 생성되었습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y0SoD7AE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uae7sqo97xfhhm0pulcn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y0SoD7AE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/uae7sqo97xfhhm0pulcn.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  9. 메일 전송 확인
&lt;/h3&gt;

&lt;p&gt;양식 제출 시 메일이 전송되는 것을 확인하였습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JIfoFxpf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31rfzgwxc25eijs1i82l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JIfoFxpf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/31rfzgwxc25eijs1i82l.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  10. 메일 본문 내 스프레드시트 내용 첨부
&lt;/h3&gt;

&lt;p&gt;메일 본문이 심심하므로, 설문조사를 한 내용이 담겨 있는 스프레드시트 내용을 첨부하는 소스코드를 작성합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function onFormSubmit(e) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("A1:G10");   
  var values = range.getValues();
  console.log(values);

  var contents = values.map(function(i) {return i + "&amp;lt;br&amp;gt;"});
  if (contents.length &amp;gt; 0) {
    var emailAddress = "&amp;lt;구글이메일주소&amp;gt;@gmail.com"; 
    var subject = "설문이 접수되었습니다.";
    var message = contents.join("\n");

    MailApp.sendEmail({
      to: emailAddress,
      subject: subject,
      htmlBody: message, 
    });
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;spreadsheetapp.getactivesheet() 함수를 통해 구글스프레드시트를 활성화&lt;/li&gt;
&lt;li&gt;getRange() 함수를 통해 셀의 범위를 지정&lt;/li&gt;
&lt;li&gt;getValues() 함수를 통해 값들을 가져옴&lt;/li&gt;
&lt;li&gt;console.log() 함수를 통해 가져온 값을 출력&lt;/li&gt;
&lt;li&gt;map() 함수 내 function 을 실행한 결과를 이용하여 새로운 배열을 생성&lt;/li&gt;
&lt;li&gt;join() 함수를 통해 배열 값을 구분자를 이용하여 문자열로 생성&lt;/li&gt;
&lt;li&gt;MailApp.sendEmail() 함수를 통해 메일 전송&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--epqWXknS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sn0wuahpstxqxa0te5pn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--epqWXknS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sn0wuahpstxqxa0te5pn.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11. 메일 확인
&lt;/h3&gt;

&lt;p&gt;구글 설문지가 제출되는 즉시, 메일로 설문내용이 전송되었습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--soxqRY1---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vt8y8zw56odho7fhih2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--soxqRY1---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vt8y8zw56odho7fhih2i.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>구글 앱스 스크립트 (Google Apps Script) 를 이용하여 구글 스프레드시트 내용 메일로 보내기</title>
      <dc:creator>수연 안</dc:creator>
      <pubDate>Wed, 23 Jun 2021 10:59:04 +0000</pubDate>
      <link>https://dev.to/syan/google-apps-script-1-2j2m</link>
      <guid>https://dev.to/syan/google-apps-script-1-2j2m</guid>
      <description>&lt;h1&gt;
  
  
  Google Apps Script 란?
&lt;/h1&gt;

&lt;p&gt;Google Apps Script 는 자바스크립트 기반의 언어 입니다.&lt;/p&gt;

&lt;p&gt;G suite 사용 시 구글 스프레드시트 (Google Spreadsheet), 구글 닥스 (google Docs) 등 다양한 구글 애플리케이션에 대해 Google Apps Script 기반으로 자동화를 구현할 수 있고, 이를 이용하여 필요한 내용을 메일로 보낼 수 있습니다.&lt;/p&gt;

&lt;h1&gt;
  
  
  구글 앱스 스크립트 실행하기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;구글 앱스 스크립트를 실행시켜 보겠습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;구글 스프레드시트에 내용을 입력하여 준비합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlqwc546wpqiga2s070l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjlqwc546wpqiga2s070l.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;도구 &amp;gt; 스크립트 편집기를 누릅니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9ebxlfau8zb6ahscjjs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh9ebxlfau8zb6ahscjjs.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;google apps script 창으로 이동되며, &lt;br&gt;
function myFunction() 함수가 기본으로 작성되어 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwg7tgwkfxe0s6vj69dd6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwg7tgwkfxe0s6vj69dd6.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;소스코드 실행가능하도록 만들기 위해 먼저 배포를 수행합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8k6hvh7ajrel3ozbeqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu8k6hvh7ajrel3ozbeqm.png" alt="image"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;구글에 접근권한을 필요로 하기 때문에 인증을 위한 권한검토를 수행합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9bcxvcs1enh6yrfwyco.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe9bcxvcs1enh6yrfwyco.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;구글 인증이 이루어지면, 정상적으로 작성한 myFunction() 함수가 실행되는 것을 확인합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjxtb321kna8udrklsk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkjxtb321kna8udrklsk7.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  구글 앱스 스크립트 내 소스코드 작성하기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;엑셀 내의 데이터를 가져와 보겠습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getRange('B3'); 
var value = range.getValue()
console.log(value); 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;spreadsheetapp.getactivesheet() 함수를 통해 구글스프레드시트를 활성화&lt;/li&gt;
&lt;li&gt;getrange() 함수를 통해 특정 셀을 지정&lt;/li&gt;
&lt;li&gt;getvalue() 함수를 통해 값을 가져옴&lt;/li&gt;
&lt;li&gt;console.log() 함수를 통해 가져온 값을 출력&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyrtkq7wxg16kk3r902m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnyrtkq7wxg16kk3r902m.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  구글 앱스 스크립트로 메일 보내기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;엑셀 내의 데이터를 이메일로 보내보겠습니다.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange('B3');  
  var value = range.getValue()
  console.log(value); 

  var email_address = "&amp;lt;구글이메일주소&amp;gt;@gmail.com"; 
  var email_subject = "테스트";
  var email_htmlbody = "테스트" + value;

  // 메일 보내기
  MailApp.sendEmail({
    to: email_address,
    subject: email_subject,
    htmlBody: email_htmlbody, 
  });
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;email 주소, 제목, 내용을 작성&lt;/li&gt;
&lt;li&gt;MailApp.sendEmail() 함수를 통해 메일 전송&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfxgk2wx8bqc2ik4jm3v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvfxgk2wx8bqc2ik4jm3v.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3319o37avxkibic9a69d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3319o37avxkibic9a69d.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[slackbot] aws lambda 로 python 자동화 코드 실행하기</title>
      <dc:creator>수연 안</dc:creator>
      <pubDate>Wed, 12 May 2021 11:32:54 +0000</pubDate>
      <link>https://dev.to/syan/slackbot-aws-lambda-python-21f4</link>
      <guid>https://dev.to/syan/slackbot-aws-lambda-python-21f4</guid>
      <description>&lt;p&gt;&lt;em&gt;python 코드에 대한 설명은 &lt;br&gt;
&lt;a href="https://dev.to/syan/slackbot-setting-2d2o"&gt;이전 게시물&lt;/a&gt;에서 작성되어 생략합니다.&lt;/em&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  1. aws lambda 환경 만들기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;aws lambda 란?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Amazon에서 제공하는 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 서버리스(serverless) 컴퓨팅 서비스입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1) 함수 생성
&lt;/h3&gt;

&lt;p&gt;aws lambda 메뉴에 접근 후 함수 생성 클릭&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UT64w5vJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u15ms5g6fgh26nn5ng0a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UT64w5vJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/u15ms5g6fgh26nn5ng0a.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2) 함수 이름 입력 및 언어 선택
&lt;/h3&gt;

&lt;p&gt;원하는 함수이름을 입력하고, 함수를 작성하는 데 사용할 언어를 선택&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9tiMYk-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kn8efty7z8k0stdp83qq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9tiMYk-6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kn8efty7z8k0stdp83qq.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3) 함수 환경 확인
&lt;/h3&gt;

&lt;p&gt;함수를 생성이 완료되어 lambda 메인 화면을 확인함&lt;br&gt;
lambda function (python : lambda_function.py) 파일이 생성됨&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[코드] 메뉴에서 코드를 작성하고 수정 및 배포할 수 있음&lt;/li&gt;
&lt;li&gt;[테스트] 메뉴에서 함수를 호출하여 실행한 결과를 확인할 수 있음&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aXnVd45m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1l0v29ygvhctus3br0t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aXnVd45m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/b1l0v29ygvhctus3br0t.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4) 테스트 이벤트 환경 구성
&lt;/h3&gt;

&lt;p&gt;코드 메뉴에서 테스트 및 이벤트 환경을 구성하여 빠르게 이벤트 실행이 가능함&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_OlH658R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vwvt2reknspvbwztn9vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_OlH658R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vwvt2reknspvbwztn9vd.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5) 테스트 실행 결과 확인
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Nn0wmB-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ns4wxf2czglcchsfm2o2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Nn0wmB-P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ns4wxf2czglcchsfm2o2.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--toRJiZSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ivt2jfgpvvonhalqlz8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--toRJiZSO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3ivt2jfgpvvonhalqlz8.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. python 코드로 slack에 메세지 전송하기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;생성된 lambda function 및 구성 환경에 python코드를 작성하여 slack 채널로 메세지를 전송한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1) slack_sdk 파일 업로드
&lt;/h3&gt;

&lt;p&gt;slack_sdk 모듈을 import 해서 사용해야 하기 때문에&lt;br&gt;
로컬에 다운로드한 slack_sdk 소스코드를 lambda에 업로드가 필요함&lt;br&gt;
.zip 파일 업로드 기능을 이용하여, slack_sdk 소스코드를 압축하여 업로드&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OBowrYLe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dgq0jpw7sb5rxh0nf1iu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OBowrYLe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dgq0jpw7sb5rxh0nf1iu.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2) slack_sdk 업로드 확인
&lt;/h3&gt;

&lt;p&gt;소스코드들이 업로드 되어 왼쪽 파일 트리 내 코드 확인이 가능함&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gmH64Va_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/00kbtd5h1wlg3iw6pl3x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gmH64Va_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/00kbtd5h1wlg3iw6pl3x.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3) python 실행
&lt;/h3&gt;

&lt;p&gt;업로드한 slack_sdk 소스코드를 포함하여, 필요한 python 코드를 작성하고 실행&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f7-u3L1F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v8bnjeufhg6thiehrp2i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f7-u3L1F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v8bnjeufhg6thiehrp2i.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4) 실행
&lt;/h3&gt;

&lt;p&gt;작성한 스크립트 파일을 실행하면, slack으로 작성된 코드가 전달되는 것을 볼수 있다.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1sXXANoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvwa7gx4s3ouxd36nga3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1sXXANoD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gvwa7gx4s3ouxd36nga3.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. cron 스케줄링 작성
&lt;/h1&gt;

&lt;h3&gt;
  
  
  1) 트리거 추가
&lt;/h3&gt;

&lt;p&gt;트리거 추가 기능을 이용하여 스케줄링 가능&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Db_fZcEd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3znsec8kc4q1ck9lnee.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Db_fZcEd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v3znsec8kc4q1ck9lnee.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2)EventBridge(CloudWatch Events) 이벤트 트리거 구성
&lt;/h3&gt;

&lt;p&gt;만들어진 lambda 함수를 정해진 시간에 자동으로 원하는 명령이 실행될 수 있도록 트리거를 추가&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jqpmi4hD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3js3ubvzonhkpnb0qv1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jqpmi4hD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c3js3ubvzonhkpnb0qv1.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3) 트리거 규칙 설정
&lt;/h3&gt;

&lt;p&gt;cron(분 시간 일 월 요일 년)의 형식에서 원하는 시간을 설정&lt;br&gt;
시간이 UTC시간이라 한국 시간으로 하기 위해서는 "한국시간 - 9시간"으로 작성&lt;br&gt;
아래 사진은 매 2분마다 알람이 오도록 설정&lt;br&gt;
 &lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u-gbQfYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gj5seqhc8nfke8tcdvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u-gbQfYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4gj5seqhc8nfke8tcdvg.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4) 트리거 추가 완료
&lt;/h3&gt;

&lt;p&gt;트리거가 추가로 인해 정해진 시간에 실행되어 알람이 오도록 가능함&lt;br&gt;
원하는 트리거 설정으로 변경하여 사용 가능함&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wV6Dme1P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgq1lj1l5cz6ri3fdxe3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wV6Dme1P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cgq1lj1l5cz6ri3fdxe3.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5) 자동 실행
&lt;/h3&gt;

&lt;p&gt;2분마다 실행되도록 설정 된 것을 확인함&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EYgsNJ_h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/viiid7854yw5rjfy9jof.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EYgsNJ_h--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/viiid7854yw5rjfy9jof.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>[slackbot] slack api 를 이용하여 python 자동화 코드 개발하기</title>
      <dc:creator>수연 안</dc:creator>
      <pubDate>Wed, 14 Apr 2021 10:48:57 +0000</pubDate>
      <link>https://dev.to/syan/slackbot-setting-2d2o</link>
      <guid>https://dev.to/syan/slackbot-setting-2d2o</guid>
      <description>&lt;h1&gt;
  
  
  1. slack-api app 만들기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;slack app을 생성하여 활용할 수 있는 bot을 생성한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1) slack api 내 apps 생성
&lt;/h3&gt;

&lt;p&gt;slack api &amp;gt; your apps &amp;gt; Create New Apps  를 클릭하여 앱을 생성&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;slack api url : &lt;a href="https://api.slack.com/"&gt;https://api.slack.com/&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2) slack api 정보 설정
&lt;/h3&gt;

&lt;p&gt;기본정보 및 OAuth &amp;amp; Permissions 내 Scopes 정보를 설정&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IuT3nAMf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v87dq9pmvf0iw1gqahz4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IuT3nAMf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v87dq9pmvf0iw1gqahz4.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  2. python 가상환경 만들기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;가상환경을 통해 원하는 파이썬 모듈 및 버전을 세팅하여 활용한다.&lt;br&gt;
프로젝트마다 다른 하나의 가상환경을 생성하여 작업 가능하다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h6&gt;
  
  
  가상환경의 대표적인 모듈
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;venv : python 3.3 버전 이후 부터 기본 모듈에 포함됨&lt;/li&gt;
&lt;li&gt;virtualenv : python 2 버전부터 사용해오던 라이브러리. python 3.6에서 폐지됨&lt;/li&gt;
&lt;li&gt;conda : anaconda python을 설치했을 시 사용 가능한 모듈 &lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  1) venv 생성
&lt;/h3&gt;

&lt;p&gt;가상환경을 생성할 디렉토리로 이동하여, 아래 명령어를 통해 가상환경을 생성&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# python3 -m venv ./(생성하고자 하는 가상환경이름)
python3 -m venv ./myenv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2) venv 활성화
&lt;/h3&gt;

&lt;p&gt;아래 명령어를 통해 생성한 가상환경을 활성화&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# source (가상환경 이름)/bin/activate
source myenv/bin/activate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3) venv 비활성화
&lt;/h3&gt;

&lt;p&gt;아래 명령어를 통해 생성한 가상환경을 활성화&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KCeWrOmR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/imjjkgylea38cml4l0ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KCeWrOmR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/imjjkgylea38cml4l0ec.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. python 코드로 slack에 메세지 전송하기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;생성된 슬랙bot의 token값을 이용하여, 작성된 python코드를 slack 채널로 메세지를 전송한다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  1) venv 내 slack_sdk를 설치
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9w7IWaA8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3s9w5d3ia547vnxhmzs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9w7IWaA8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m3s9w5d3ia547vnxhmzs.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2) venv 내 ssl 인증서 업데이트
&lt;/h3&gt;

&lt;p&gt;python 코드 실행 시 SSL 에러가 발생하면 인증서를 업데이트 해줍니다.&lt;br&gt;
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123) &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--plIUbQcq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/454fqw1r8db12deoqo9r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--plIUbQcq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/454fqw1r8db12deoqo9r.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  3) python 실행
&lt;/h3&gt;

&lt;p&gt;아래 python 코드를 작성하고 실행합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;local.py 에 SLACK_TOKEN 이라는 변수를 세팅하여 슬랙토큰을 넣는다.&lt;/li&gt;
&lt;li&gt;미리 설치한 slack_sdk를 이용하여 필요한 모듈을 import 합니다.&lt;/li&gt;
&lt;li&gt;원하는 채널명, 원하는 텍스트를 작성합니다.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import sys
from local import SLACK_TOKEN
from datetime import datetime
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
try:
    client = WebClient(token=SLACK_TOKEN)
    client.chat_postMessage(
        channel = "#team_security_bot_test",
        text = datetime.strftime(datetime.now(), 
        '-------------------------------------- \n'+
        '[%Y.%m 월간 업무 알림] \n'+
        ' - 보안교육 일정 예약하기\n'+
        ' - 보호구역 출입기록대장 검토하기\n'+
        '--------------------------------------')
    )
except SlackApiError as e:
    assert e.response["error"]
    print(f"Got an error: {e.response['error']}")

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h1&gt;
  
  
  4. bash script 에서 명령 작성
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;windows에서 bat파일처럼 mac에서 bash script를 통해 명령어를 작성할 수 있다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  1) bash script 작성
&lt;/h3&gt;

&lt;p&gt;첫째 줄에 #!/bin/bash를 입력하고 실행을 원하는 명령을 입력하여 저장&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;python을 실행하기 위해 가상환경을 활성화하는 명령&lt;/li&gt;
&lt;li&gt;python 코드를 실행하기 위한 명령&lt;/li&gt;
&lt;li&gt;python 가상환경을 종료하기 위해 비활성화하는 명령
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/bin/bash
source /Users/syan/py/myenv/bin/activate
python /Users/syan/py/myenv/test2.py
deactivate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2) 실행
&lt;/h3&gt;

&lt;p&gt;작성한 스크립트 파일을 실행하면, slack으로 작성된 코드가 전달되는 것을 볼수 있다.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jqHdYPwF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbxg1krumfr01cmfg12i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jqHdYPwF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kbxg1krumfr01cmfg12i.png" alt="image"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a7EoQ2JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ho15l2cbgmrjrf9nuly.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a7EoQ2JK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1ho15l2cbgmrjrf9nuly.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
  
  
  5. crontab 에서 스케줄링 작성
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;정해진 시간에 자동으로 원하는 명령이 실행될 수 있도록 스케줄링 작성한다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;
  
  
  1) 작성방법
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;각 별 위치에 따라 주기를 다르게 설정 가능&lt;/li&gt;
&lt;li&gt;순서대로 분-시간-일-월-요일&lt;/li&gt;
&lt;li&gt;괄호 안의 숫자 범위 내로 별 대신 입력 가능&lt;/li&gt;
&lt;li&gt;1부터 월요일이고 6이 토요일. 0과 7은 일요일.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*　　　　　　*　　　　　　*　　　　　　*　　　　　　*             명령
분(0-59)　　시간(0-23)　　일(1-31)　　월(1-12)　　　요일(0-7)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  2) 실행예시
&lt;/h3&gt;

&lt;p&gt;매월 1일 9시 1분에 pytest2.sh 를 실행&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#-------------#
# 월간 업무 알림 #
#-------------#
1 9 1 * * /Users/syan/py/pytest2.sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  6. mac 전원 깨우기
&lt;/h1&gt;

&lt;blockquote&gt;
&lt;p&gt;mac이 켜져있어야 crontab도 동작을 할 것이고, 명령도 실행이 될 것 이다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ol&gt;
&lt;li&gt;Mac에서 Apple 메뉴 &amp;gt; 시스템 환경설정을 선택한 다음, 에너지 절약을 클릭하십시오.&lt;/li&gt;
&lt;li&gt;오른쪽 하단에 있는 ‘일정’을 클릭한 다음, 사용할 옵션을 선택하십시오.&lt;/li&gt;
&lt;li&gt;Mac 시동 또는 깨우기 시간 설정하기: ‘시동 또는 깨우기’ 체크상자를 선택하십시오. 팝업 메뉴에서 하루나 여러 날을 선택한 다음 시간을 입력하십시오.&lt;/li&gt;
&lt;li&gt;Mac 잠자기, 재시동 또는 종료 시간 설정하기: ‘잠자기, 재시동 또는 시스템 종료’ 체크상자를 선택하고 왼쪽의 팝업 메뉴에서 적절한 옵션을 선택하십시오. 오른쪽의 팝업 메뉴에서 하루 또는 여러 날을 선택한 다음 시간을 입력하십시오.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mM3dGaeP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hx6fu6d3nt8xe19bm8f3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mM3dGaeP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hx6fu6d3nt8xe19bm8f3.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>start posting</title>
      <dc:creator>수연 안</dc:creator>
      <pubDate>Wed, 14 Apr 2021 10:05:27 +0000</pubDate>
      <link>https://dev.to/syan/start-posting-3n8j</link>
      <guid>https://dev.to/syan/start-posting-3n8j</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qj7ZkvJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zslzqkhuk74fchg5z8k2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qj7ZkvJ0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zslzqkhuk74fchg5z8k2.png" alt="image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;hi 안녕&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
