Google AppsのスクリプトでServerlessチャットボット
27346 ワード
TLドクター
“ガス(Google Appsのスクリプト)”を使用して、“Googleカレンダー”“今日のイベントを通知する”Googleチャット“、”おしゃべりと“ラインメッセンジャー”毎朝.
必要なのは
ソースコード:kurab/notifyEvents
Google Appsのスクリプトは何ですか?
これはJavaScriptベースのプログラミング言語は、Googleによって提供される多くのことを行うことができ、Googleのサービスと統合するのは簡単です.
今日では、非エンジニアでさえ、Pythonにそれらのすべてのルーチン作業をすることができます.しかしPythonでは、これをインストールしなければならないという点で始めるのは少し難しいです.Google Appsのスクリプトでは、一方、すべての必要なブラウザとGoogleアカウントですので、非エンジニアでも簡単に始めることができます.さらに、GSuiteを使用する企業も多いので、Googleのサービスに比較的日常的な作業を行うことができます.
ガスは基本的にJavascriptであるので、あなたはちょうどGoogleによって問題の大部分を解決することができます.
ハローワールド
まず、Googleのドライブへのアクセス.今回は「my drive > bot」ディレクトリで作業したいです.
を選択して“Google Appsのスクリプト”から“+新しい”メニューの左上または“右クリック”メニューより多くの.
次に、このようにスクリプトエディタに移動します.
プロジェクト名としてHelloWorldという名前を付け、次のようにコードを更新します.
function myFunction() {
console.log('Hello, World');
}
コードを保存した後に▶) メニューで.何も起こらないようですが、メニュー「ビュー」ログからログを見つけることができます.おめでとう!今すぐあなたの最初のGoogle Appsのスクリプトを行っている.これはガスの基本的な作業の流れです.
カレンダーイベント
GoogleカレンダーAPIのリファレンスです.
今回は今日のイベント情報を取得したいです.
ガスファイルと名前“NotifyCalendar”または何かを作成しましょう.
開始するには、スクリプトからカレンダーにアクセスし、カレンダー名を取得します.
カレンダーの「設定と共有」でカレンダーIDを見つけてください.カレンダーカレンダーIDを統合し、次のコードで{カレンダーID }に貼り付けます.
function notifyEvents() {
const calendarId = '{Calendar ID}';
const calendar = CalendarApp.getCalendarById(calenderId);
const calendarName = calendar.getName();
console.log(calendarName);
}
これを実行すると、あなたのカレンダーへのアクセスのレビューがあります.その後、実行を完了するのを待つ、ログを開くと、カレンダー名が表示されます.まだログがない場合はしばらく待ちます.さあ、今日のイベントをカレンダーに入れて、ログに入れましょう.
function notifyEvents() {
const calendarId = '{Calendar ID}';
const calendar = CalendarApp.getCalendarById(calenderId);
const calendarName = calendar.getName();
const today = new Date();
const calendarEvents = calendar.getEventsForDay(today);
console.log(calendarEvents);
}
今日のイベントがある場合は、[{ }{ {}}}}のようなデータを取得します.イベントがない場合は[]のような空の配列を取得します.あなたが持っている場合はイベントをリスト表示し、“ないイベント”を表示します.さて、今日だけではなく、期間を指定する場合は、getEventsメソッドを使用します.
function notifyEvents() {
const calendarId = '{Calendar ID}';
const calendar = CalendarApp.getCalendarById(calendarId);
const calendarName = calendar.getName();
const today = new Date();
const calendarEvents = calendar.getEventsForDay(today);
if (calendarEvents.length) {
for (var event of calendarEvents) {
var eventTitle = event.getTitle() ? event.getTitle() : '(no title)';
console.log(eventTitle);
}
} else {
console.log('no event');
}
}
gettitleメソッドはno titleイベントに対して“no title”を返さない.自分で設定する必要があります.あなたのカレンダー上のいくつかのイベントがタイムアウトされ、いくつかはありませんので、タイムイベントを持っている場合は、同様にそれを表示します.同時に、あなただけでなく、思いやりのメッセージを追加するイベントの名前を送信する必要はありません.
function notifyEvents() {
const calendarId = '{Calendar ID}';
const calendar = CalendarApp.getCalendarById(calendarId);
const calendarName = calendar.getName();
const today = new Date();
const calendarEvents = calendar.getEventsForDay(today);
var message = 'Good morning!\n' +
'Notification from ' + calendarName + 'at' +
Utilities.formatDate(today, 'GMT+0900', 'MM/dd') +
'\n-----------------------------------------';
if (calendarEvents.length) {
for (var event of calendarEvents) {
var eventTitle = event.getTitle() ? event.getTitle() : '(no title)';
message = message + '\n- ' + eventTitle;
if (!event.isAllDayEvent()) {
message = message + ' at '+
Utilities.formatDate(event.getStartTime(), 'GMT+0900', 'HH:mm') + '~' +
Utilities.formatDate(event.getEndTime(), 'GMT+0900', 'HH:mm') + '(JST)';
}
}
} else {
message = message + '\nno event';
}
console.log(message);
}
我々は正常に今すぐカレンダーイベントを取得している.あなたはAPIによってより多くの情報を得ることができます.
ポストチャット
グーグルチャット
チャットWebhookのURLをチャットルームでは、カレンダーのイベントを投稿します.
{ Webhook URL }にペーストします.
function notifyEvents() {
...
} else {
message = message + '\nno evnet';
}
postToChat(message);
}
function postToChat(message) {
const chatWebhook = '{Webhook URL}';
const messageText = { 'text': message };
const options = {
'method': 'POST',
'headers': {
'Content-Type': 'application/json; charset=UTF-8'
},
'payload': JSON.stringify(messageText)
};
var result = UrlFetchApp.fetch(chatWebhook, options);
Logger.log(result);
}
アクセスを確認するようお願いしますので、許可してください.チャット
チャットの設定とチャットチャットルームIDを投稿したい場合は、チャットWorkトークンを発行します.XXXXXX (番号)URLのridXXXXXX.
ガスエディタでメニューを開きます.
M6TcEyniCs1xb3sdXFF_FhI-MNonZQ_sT
最新版、18を設定します.
あなたのチャットワークAPIトークンとルームIDを貼り付けます.
function notifyEvents() {
...
//postToChat(message);
postToChatwork(message);
}
function postToChat(message) {...}
function postToChatwork(message) {
const chatworkToken = '{Chatwork API Token}';
const chatworkRoomId = '{Chatwork Room ID}';
const chatworkClient = ChatWorkClient.factory({token: chatworkToken});
chatworkClient.sendMessage({room_id: chatworkRoomId, body: message});
}
ラインメッセンジャー
今回は、自分だけにメッセージを送ることができますので、固定IDにメッセージを送信することができます.
フロー:
API設定(メッセージングAPI設定)の
メッセージングAPI設定の
あなたのラインSmartphoneアプリの
...
function postToLine(message) {
const lineToken = '{LINE Token}';
const lineMessagePushUrl = 'https://api.line.me/v2/bot/message/push';
const lineHeaders = {
"Content-Type": "application/json; charset=UTF-8",
"Authorization": "Bearer " + lineToken
};
const linePayload = {
"to" : "{User ID}",
"messages" : [{
"type": "text",
"text": message
}]
};
const options = {
"method": "POST",
"headers": lineHeaders,
"payload": JSON.stringify(linePayload)
};
var result = UrlFetchApp.fetch(lineMessagePushUrl, options);
Logger.log(result);
}
トリガを設定し、毎朝実行する
最後に、自動実行を設定しましょう.メニューの「実行」ボタンの横にある「トリガー」ボタンをクリックすると、「トリガー設定」ページにリダイレクトされます.新しいトリガーを作成します.
この場合、私はこのアプレットに毎朝1回だけ通知して欲しい.午前9時から午前10時までの神秘的な範囲について、私は数日間それを実行しようとしました、そして、それは9 : 46 amです、そして、毎日は異なります.私は不快に感じません、しかし、私のケースでは、通知が仕事の開始の前に来る限り、私はそれがよいと思いました.
それだけです.私は週末と日曜日に通知を得るつもりです.それで、土曜日と日曜日にメッセージを送らないために、ガスにプロセスを加えます.休み.私はそれを行うことができますが、今回、それは大丈夫です.
function notifyEvents() {
const calendarId = '[email protected]';
const calendar = CalendarApp.getCalendarById(calendarId);
const calendarName = calendar.getName();
const today = new Date();
const dayOfWeek = today.getDay();
if (dayOfWeek === 0 || dayOfWeek === 6) return;
const calendarEvents = calendar.getEventsForDay(today);
...
}
...
PS
Google AppsのスクリプトをGogledすると、スプレッドシートからの記事がたくさんあります.そしてエクセルのマクロに相当する印象を持っていて、誰も維持できない秘密のExcelマクロを思い出させてくれました.
まあ、とにかく、私はそれが良いものをGoogle Appsのスクリプトを使用するオプションを持って良いことだと思う.
この記事のサンプルスクリプトはこちら.
Reference
この問題について(Google AppsのスクリプトでServerlessチャットボット), 我々は、より多くの情報をここで見つけました https://dev.to/kurab/serverless-chat-bot-by-google-apps-script-step-step-41nbテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol