見出し画像

[GAS] NotionAPIを使って、作成した日報ページの内容を取得しChatworkでメッセージを送信する3

はじめに

GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する、という処理を実装します、最終回です。

前回は、Notionの日報ページから作業内容を取得する処理を実装しました。

今回は、前回Notionの日報ページから取得した作業内容と、出社、退社の時間を合わせて、日報報告としてChatworkに送信する処理を実装します。

日報としてメッセージを送信する内容は、Googleスプレッドシート内にひな形のシートを準備します。
その日の勤務時間は、月ごとに作成される出社、退社の時間のシートから、今日の情報を取得できるよう、関数を設定します。
業務内容は、Notionの日報ページより、取得してくるように実装します。

出社、退社一覧
日報ひな形のシート

実装

全体の処理は、下記です。

/**
* 日報をChatworkに送信する
*
*/
function sendDiarytoChatwork(){
	const props = PropertiesService.getScriptProperties();
 const token = props.getProperty('CW_TOKEN');
  const roomId = props.getProperty('CW_ROOM_ID');

  const message = getMessage_();
  sendMessage_(token,roomId, message);
}

/**
* 送信用メッセージをスプレッドシートから取得
*
* @return {string} 送信するメッセージ本文
*/
function getMessage_(){
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(DIARY_TEMPLATE_SHEET_NAME);
  const values = sheet.getDataRange().getDisplayValues();

  const message = values.map(row => row.join(''));
  return message.join('\n');
}

/**
* Chatworkにメッセージ送信
*
* @param {string} Chatwork APIトークン
* @param {string} Room ID
* @return {string} 送信するメッセージ本文
*
* 〈ライブラリ〉
* Chatwork Client for Google Apps Script : 1nf253qsOnZ-RcdcFu1Y2v4pGwTuuDxN5EbuvKEZprBWg764tjwA5fLav
* https://github.com/cw-shibuya/chatwork-client-gas
*/
function sendMessage_(token, roomId,msgbody){
  const cw = ChatWorkClient.factory({token: token});
  cw.sendMessage({
    room_id: roomId,
    body: msgbody
  });
}

順に処理を説明します。

①getMessage_関数

日報としてメッセージを送信する内容を保存しているシートの特定セルから、セルの内容を取得し、メッセージの文字列を生成します。

セルから値を取得する関数を、getDisplayValues関数としています。

const values = sheet.getDataRange().getDisplayValues();

理由は、セルの日付を表示されたまま取得したいためです。
今回は、下図のように日付と時間を、表示形式で設定しています。

getValues()を使用すると、Date型となるため、スクリプトのタイムゾーンに依存して、文字列が作成されてしまうため、表示されている文字列を同じものを取得するようにしています。

'Wed Mar 23 2022 00:00:00 GMT+0900 (Japan Standard Time)’

取得したセルは、セルとセルの間にスペースを設定、そして、行で改行を設定した文字列と生成しています。

  const message = values.map(row => row.join(''));
  return message.join('\n');

②sendMessage_関数

Chatworkへのメッセージ送信を行っています。こちらは、Chatworkライブラリ「ChatWorkClient for Google Apps Script」を使用しています。

ChatWorkClient for Google Apps Scriptのライブラリ追加方法は、下記にまとめていますので、ご確認ください。

処理は以上です!
実行すると、Chatworkに日報報告が送信されているのを確認できました。

Chatworkの日報報告メッセージ

まとめ

今回は、GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する、という処理を実装しますの最終回として、前回Notionの日報ページから取得した作業内容と、出社、退社の時間を合わせて、日報報告としてChatworkに送信する処理を実装しました。以上でツールは完成です。

NotionAPIの事前準備、そして、今回作成したツールのご紹介全3回は、下記より確認できます。


この記事が気に入ったらサポートをしてみませんか?