![見出し画像](https://assets.st-note.com/production/uploads/images/74971087/rectangle_large_type_2_18223457906b30631fcecfeecc7498d0.png?width=800)
[GAS] NotionAPIを使って、作成した日報ページの内容を取得しChatworkでメッセージを送信する3
はじめに
GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する、という処理を実装します、最終回です。
前回は、Notionの日報ページから作業内容を取得する処理を実装しました。
今回は、前回Notionの日報ページから取得した作業内容と、出社、退社の時間を合わせて、日報報告としてChatworkに送信する処理を実装します。
日報としてメッセージを送信する内容は、Googleスプレッドシート内にひな形のシートを準備します。
その日の勤務時間は、月ごとに作成される出社、退社の時間のシートから、今日の情報を取得できるよう、関数を設定します。
業務内容は、Notionの日報ページより、取得してくるように実装します。
![](https://assets.st-note.com/img/1648156835110-JTzO31YMUS.png?width=800)
![](https://assets.st-note.com/img/1648155717498-AWUogU5iv5.png)
実装
全体の処理は、下記です。
/**
* 日報を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();
理由は、セルの日付を表示されたまま取得したいためです。
今回は、下図のように日付と時間を、表示形式で設定しています。
![](https://assets.st-note.com/img/1648155882205-os4fyE0Nto.png)
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に日報報告が送信されているのを確認できました。
![](https://assets.st-note.com/img/1648156069350-JVPgPFopOQ.png?width=800)
まとめ
今回は、GASで、NotionAPIを使用し、前回作成した日報ページから作業内容を取得し、日報を報告するメッセージをChatworkで送信する、という処理を実装しますの最終回として、前回Notionの日報ページから取得した作業内容と、出社、退社の時間を合わせて、日報報告としてChatworkに送信する処理を実装しました。以上でツールは完成です。
NotionAPIの事前準備、そして、今回作成したツールのご紹介全3回は、下記より確認できます。
この記事が気に入ったらサポートをしてみませんか?