스프레드시트의 날짜 열이 오늘이면 필요한 열 정보를 집어 Slack으로 보내기

스프레드 시트의 데이터를 Slack에 통지하는 처리를 작성했으므로 메모입니다. 이러한 스프레드시트가 있었다고 해서 날짜가 오늘이라면 그 행의 항목 1과 항목 3의 내용을 Slack에 보냅니다. 스케줄을 준비하여 매일 아침 Slack에 알릴 수 있습니다.


(날짜는 순서대로 줄지어 있지 않아도 된다. 도중에 공란이 있어도 괜찮다.)

도구 -> 스크립트 편집기를 열고 스크립트 파일을 등록합니다.

스크립트 파일 copipe용("//편집"은 각각의 환경에서 편집이 필요)
function checkCell() {
    // スプレッドシートを指定(URLからコピペする)
    var spreadsheet = SpreadsheetApp.openById('xxxxxxxxxxxxx') //編集
    //シートの名前を指定する
    var sheet = spreadsheet.getSheetByName('管理表1'); //編集

    //今日の日時を取得する
    var today = new Date()
    //console.log(today); //Sat Jun 20 2020 01:14:58 GMT+0900 (日本標準時)

    var string = "";

        //必要な列のデータを配列で取得していく。getValues()を使って配列でvaluesXに入れる。
        //日付の列を取得する。
        var rangeA = sheet.getRange("A:A");
        var valuesA = rangeA.getValues();

        //項目1の列
        var rangeB = sheet.getRange("B:B");
        var valuesB = rangeB.getValues();

        //項目3の列
        var rangeD = sheet.getRange("D:D");
        var valuesD = rangeD.getValues();

    //valuesA[1][0]やvaluesA[2][0]にデータが入っているのでforをネストさせている
    for (var i = 0; i < valuesA.length; i++) {
        var date = "";
        for (var j = 0; j < valuesA[i].length; j++) {
            date = valuesA[i][j];

              //MomentjsのisSameで日付が同じかどうか(今日かどうか)を判定。日付が今日ならstringに代入する。
              if ( Moment.moment(today).isSame(date,'day')) {
                string = string + ('\n') + " 項目1は " + valuesB[i][j] + "です。" + " 項目3は " + valuesD[i][j] + "です。"; //編集
              }
            }
        }
    //stringが空だったら何もしないで終わる。
    if ( !string ) {
    return ;
    }
    //stringに何か入っていたらSlackに送信する関数を実行する。
      sendSlackMessage(string);
  }

  // Slackへ送信するfunction
  function sendSlackMessage(message) {

    var postUrl = 'https://hooks.slack.com/services/xxx/xxx/xxxxxxxx' //編集

    var jsonData =
    {
       "text" : "*今日の予定*" + message //編集
    };
    var payload = JSON.stringify(jsonData);
    var options =
    {
      "method" : "post",
      "contentType" : "application/json",
      "payload" : payload
    };
    UrlFetchApp.fetch(postUrl, options);
  }

SpreadsheetApp.openById에 넣은 ID는 URL의 가면 부분입니다.


날짜 처리를 다루는 라이브러리 Moment.js를 사용했으므로 설치합니다. 여기를 참고했습니다.
htps : //가 되어-t. 이 m /가 s-momen tjs-momen t /

리소스 -> 라이브러리


스크립트 ID: MHMchiX6c1bwSqGM1PZiW_PxhMjh3Sh48


설치가 완료되면 수동으로 실행해 봅니다(checkCell을 선택하고 ▶를 클릭). 처음에는 권한의 허가가 필요하기 때문에 허가한다.


Slack에 이런 식으로 보내져 왔기 때문에 우선 OK로 합니다.


[시간 주도형]으로 태스크에 등록해 두면 정기적으로 통지도 할 수 있다.


좋은 웹페이지 즐겨찾기