【효율화】gmail을 GoogleSpreadSheet에서 자동 송신하는 구조 【일하는 방법 개혁】

개요



Google 서비스를 사용하고 있습니다. 예를 들어 메일 서비스 gmail.
메일의 송신을 자동화할 수 없을까 생각한다.

업무 개선! 효율화! ! 일하는 방법 개혁! ! !
이번은, 소정의 일시가 되면 메일 송신.

gmail에서 예약 제출 기능이 구현되었습니다.

"gmail 예약 보내기"에서 검색하면 산만큼 나옵니다.
이 예약 송신 기능을 사용해 보았습니다만, 1통 1통으로 설정해 가는 것입니다.
원샷의 메일을 예약 송신하는 분에게는 편리했습니다.

제 경우에는 비슷한 이메일을 정기적으로 보내고 싶습니다.

google 스프레드 시트에서,
  • 몇 통의 예약 메일을 한꺼번에 편집!
  • "에이야!"와 목적지, 제목, 본문 및 전송 예정 날짜와 시간을 copipe로 붙여 넣기
  • 어쨌든, 나는 덥고 덥고 싶다.

    이런, 메일 자동 송신의 구조를 할 수 있으면…
    그런 느낌으로,
    Google 스프레드로 gmail 자동 제출을 실현했습니다.

    선구자들



    선구자의 여러 선배가 있습니다.
    감사합니다!
    원형 파크리 시켜 주셨습니다! ! 감사! ! !

    Google Apps Script에서 지정된 시간에 이메일을 보내는 시스템을 만들었습니다.
    htps : // 코 m / 겐도 도 / ms / 4839 아 f8700742 아 646

    Google Apps Script로 자동으로 이메일 보내기
    htps //w w. 카베기와 bぉg. 코m/엔트리/2017/08/23/141037

    거친 절차



    기본, 선구자님의 기재를 참조하면 할 수 있습니다만,
    얼른 절차를 정리해 둡니다.
  • google 계정 만들기 (이미 보유한 사람은 OK)
  • 하나의 google 스프레드 시트를 만들었습니다.
  • google 스프레드 시트에서 'google app script'를 만듭니다
  • 소스 코드는 소스 코드 를 참조
  • 자동 실행하고 싶기 때문에 트리거를 설정한다

  • 소스 코드



    *.js
    function calledByCron() {
      const COL_NO_TO       = 0;  // to(宛先)列
      const COL_TITLE       = 1;  // title(メールのタイトル)列
      const COL_DESCRIPTION = 2;  // description(メール本文)列
      const COL_SEND_MAIL   = 3;  // send_mail(送信予定日時)列
      const COL_SENT_MAIL   = 4;  // sent_mail(送信完了日時)列
      const COL_STOP_FLAG   = 5;  // stop_flag(送信抑止フラグ)列
    
      // 現在時刻を取得
      var dtLimit = new Date();
    
      // 開始行数
      const START_ROWS = 2;  // 2行目から
      // 開始列数
      const START_COLS = 1;  // A列から
    
      // シートの取得
      var sheet = SpreadsheetApp.getActiveSheet();
    
      // シートのデータを取得(2次元配列)
      var sheetData = sheet.getSheetValues(START_ROWS, START_COLS, sheet.getLastRow(), sheet.getLastColumn());
    
      // シートの各行ごとにデータを取り出す
      sheetData.forEach(
        function(value, index)
        {
          // stop_flag値が空文字なら実行
          if ( value[COL_STOP_FLAG] == "" )
          {
            // 送信完了していない
            if ( !value[COL_SENT_MAIL] )
            {
              // 送信予定日時が現在時刻より前ならば、メールを送信する
              if ( (new Date(value[COL_SEND_MAIL])).getTime() < dtLimit.getTime())
              {
                // メールを送信する
                MailApp.sendEmail(value[COL_NO_TO], value[COL_TITLE], value[COL_DESCRIPTION]);
                // 送信完了日時をシートに書く
                sheet.getRange( (START_ROWS + index), (COL_SENT_MAIL + 1)).setValue(dtLimit);
              }
            }
          }
        }
      );
    
      // memo :
      //   getRange(row, column [, numrows [, numcolumns]])
      //     row        [int] 指定する範囲の行番号。
      //     column     [int] 指定する範囲の列番号。A列を1とする。
      //     numrows    [int] (省略可)範囲の行数を指定する。デフォルト1。
      //     numcolumns [int] (省略可)列数を指定する。デフォルト1。
    }
    


    자동 실행 설정



    마지막으로 자동 실행 설정이지만,
    일단, 선구자님의 기사를 봐 주시면 알겠지만,
    google의 사용자 인터페이스가 깔끔하게 변하기 때문에,
    이미지가 조금 오래되었습니다. 그래서 캡쳐 다시 찍어 (2019/06/05)했습니다.

    (1) google app script 화면에서 아래 이미지의 빨간색 테두리를 클릭


    (2) 새로운 탭 화면 (사용 브라우저 : Chrome)이 열립니다
  • G Suite Developer Hub 화면이 열립니다
  • 아래 이미지와 같이 '(google 스프레드 이름)> 트리거'가 열립니다


  • (3) 오른쪽 하단의 "트리거 추가"를 클릭


    (4) 트리거 추가 대화 상자 화면이 표시되므로 적절하게 설정하고 저장합니다.


    하나만 기능 추가



    제 경우에는 선구자의 소스에서 하나만 기능을 추가하고 있습니다.
    "stop_flag"열을 만들어 두고,
    해당 열에 무언가가 많은 값(예: '1')이 있는 경우,
    발송 일시에 도달하고 있어도 메일 송신하지 않는다. 라는 기능입니다.
    일단 copipe로 메일의 병아리를 많이 만들어 두고,
    나중에 잠깐 본문을 만드겠지만,
    작업을 중단하고 그대로 잊어 버려,
    사고적으로 오폭 메일이 날아가는 것을 막기 위해서입니다.
    내용을 확인한 후 stop_flag의 셀 값을 "빈 문자"로 설정합니다.
    라는 운용을 하고 있습니다.
    덧붙여서, to 열에는 목적지 주소를 설정하지만,
    여러 사람에게 보내려면 쉼표 ","로 구분하여 셀로 설정하십시오.

    좋은 웹페이지 즐겨찾기