GAS로 스프레드 시트에 붙인 근태에서 일보 메일을 보낼 수있게했다

첫 게시물로 왠지 긴장하고 있습니다,,

배경



제가 소속하고 있는 것은 매우 작은 회사이므로, 일보는 메일, 근태는 스프레드 시트로 붙인다고 하는 것을 하고 있습니다.
근태는 좋지만, 일보는 잊는 일이 많이 있어,

일보는 이런 느낌
■ 업무 일보
담당: name
날짜: yyyy/mm/dd
근무시간:hh:mm-hh:mm 공제시간:hh:mm

■ 업무 내용
・project1
・project2

■ 기타
etc..
이런 느낌.

비슷한 것을 스프레드시트에도 쓰고 월별로 관리하고 있습니다.

문제점



주로 세
・근태를 스프레드시트에 입력할 때와 일보 메일을 칠 때에 이중에 같은 것을 입력하고 있다.
・일보에는 일보의, 근태에는 근태의 포맷이 있다
・메일은 잊기 쉽다
그리고 왠지 너무 스마트하지 않고,

해결책



GAS를 사용하여 전송하기로 결정했습니다.



모처럼 새해이므로, 근태 관리로 사용하고 있는 시트에 송신 버튼 붙여 GAS(Google App Script)로 스크립트를 써, 메일 날릴 수 있게 하면 편하지 않을까 하고 생각들, 해 보았습니다. 게다가 어쩌면 바로 할 수 있다.

시트 내용



지금의 시트는 이런 느낌입니다.


노란색 부분에 보고자와 메일 주소(송신원)를 입력하도록 란을 마련했습니다.
이슈 목록에 이슈 이름을 넣으면 풀다운 목록과 오른쪽의 이슈별 시간 집계에 이슈 이름이 들어갑니다.
스쿠쇼에서는 튀어나와 있습니다만, 매일의 코멘트나 그 외 메모를 넣는 란도 마련하고 있습니다.
이것을 임의의 1행씩 요구하면 좋네요.

메일 별칭 설정



GAS 스크립트를 작성하기 전에 이메일 별칭을 설정합니다. Gmail 설정 → 계정 및 가져오기에서 발신 메일을 추가합니다. 여기에 등록되지 않은 이메일 주소로 GAS에서 보낼 수 없습니다.
다른 이메일 주소 추가에서 SMTP 서버 정보를 추가합니다.



GAS로 스크립팅



보내기 버튼을 누르기 → 스크립트 실행 → 대화 상자가 열리고 날짜 지정
하고 싶으므로 먼저 대화 상자를 열 수 있습니다.
senddr.gs

function senddr() {  
  var sheet = SpreadsheetApp.getActiveSheet();
  var inputdate = Browser.inputBox('日報提出の日付を入力してください(m/d ex.1/7 10/2)');
  var inputrow = findRow2(sheet,inputdate,21)
}


findrow2라고 하는 것은, 입력된 단어를 포함한 행수를 취득하는 함수로, 이쪽을 참고로 했습니다. 파일은 별도로 그대로 쓰여져 있습니다.
htps : //가 되어-t. 이 m /가 s-sp 레어 d

findrow2.gs
function findRow2(sheet,val,col){ 
  var lastRow=sheet.getDataRange().getLastRow(); //対象となるシートの最終行を取得

  for(var i=1;i<=lastRow;i++){
    if(sheet.getRange(i,col).getValue() === val){
      return i;
    }
  }
  return 0;
}


쉽게 if else로 내용이 입력되었는지 확인한 후 GmailApp.sendEmail() 로 보냅니다.

  if (inputrow == 0){
    Browser.msgBox("日付の入力が間違っています。");
  }
  else if (sheet.getRange(inputrow,4).isBlank()){
    Browser.msgBox("開始時間が入力されてません。");
  }
  else if (sheet.getRange(inputrow,5).isBlank()){
    Browser.msgBox("終了時間が入力されてません。");
  }
  else if (sheet.getRange(inputrow,6).isBlank()){
    Browser.msgBox("控除時間が入力されてません。0時間の場合は0:00を入力してください。");
  }
  else if (sheet.getRange(inputrow,19).isBlank()){
    Browser.msgBox("作業内容が未入力です。");
  }
  else if (sheet.getRange(inputrow,20).isBlank()){
    Browser.msgBox("コメントが未入力です。");
  }
  else{

  var date = sheet.getRange(inputrow, 1).getValue();
  var fordate = Utilities.formatDate(date,'Asia/Tokyo', 'yyyyMMdd');
  var hiduke = Utilities.formatDate(date,'Asia/Tokyo', 'yyyy年MM月dd日');
  var name =  sheet.getRange(1, 3).getValue();
  var subtitle = "日報_" + fordate + "_" + name ;
  var mail = sheet.getRange(1, 8).getValue();

  var client =  sheet.getRange(inputrow,3).getValue();
  var start = Utilities.formatDate(sheet.getRange(inputrow,4).getValue(),'Asia/Tokyo', 'HH:mm');
  var fin = Utilities.formatDate(sheet.getRange(inputrow, 5).getValue(),'Asia/Tokyo', 'HH:mm');
  var koujo = Utilities.formatDate(sheet.getRange(inputrow, 6).getValue(),'Asia/Tokyo', 'HH:mm');
  var gyoumu = sheet.getRange(inputrow, 19).getValue();
  var com = sheet.getRange(inputrow, 20).getValue();
  var body = 
      "■ 業務日報\n担当:" + name
      + "\n日付:" + hiduke
      +"\n勤務時間:"+start + "-"+ fin
      +"\n控除時間:"+ koujo
      +"\n案件:"+client
      +"\n■ 業務内容\n"+gyoumu
      +"\n■ その他\n"+com;

    GmailApp.sendEmail('送り先のメールアドレス', 
                     subtitle, 
                     body, 
                     {
                         from: mail, 
                       name: name
                     });

  Browser.msgBox(inputdate + "の日報を送信しました。");
  }
}



해봐



생각보다 쉽게 ​​할 수 있었는데,
GAS는 편리하네요.
앞으로도 여러가지 투고할 수 있도록 노력하겠습니다!

좋은 웹페이지 즐겨찾기