Google ChatのチャットボットのAPIのGoogleの公式リファレンスのURL。
https://developers.google.com/chat/concepts
カード形式のやり方とか、Node.jsでwebhookとか、いろいろな使い方が掲載されている。
Google ChatのチャットボットのAPIのGoogleの公式リファレンスのURL。
https://developers.google.com/chat/concepts
カード形式のやり方とか、Node.jsでwebhookとか、いろいろな使い方が掲載されている。
久しぶりにGASで書いたChatbotのテストをしようとしたら、デプロイ方法が変わっていたので、書き直し。
以上で、公開は完了。
あとは、Google Chatからボットを検索して利用する。
GAS(Google Apps Script)から、Cloud SQLに接続をJDBCから行ったのだが、下記のエラーが出て接続できない。
Exception: データベース接続を確立できませんでした。接続文字列、ユーザー名、パスワードを確認してください。
接続先の環境は、Cloud SQL(Google Cloud Platform SQL)上で新しく作ったインスタンスで、第2世代で、MySQL8.0のインスタンス。
GASのソースコードとしては、下記。
function dbConn() {
var dbConnectName = "プロジェクト名:us-central1:インスタンス名"; // GCP上で表示される接続名
var user = "ユーザ名";
var password = "パスワード";
var dbName = "DB名";
var conURL = "jdbc:google:mysql://" + dbConnectName + "/" + dbName;
Logger.log(conURL);
var dbCon = Jdbc.getCloudSqlConnection(conURL, user, password);
Logger.log(dbCon.getCatalog());
return dbCon;
}
いろいろと調べて、JDBCの`Jdbc.getConnection`でも試したが、接続できず。
原因として、わかったことは、GASから呼び出されるJDBCは、MySQL8.0へのインスタンスへの接続に対応していないということ。MySQL5.7で新しくインスタンスを作り直して、`Jdbc.getCloudSqlConnection`を行ったところ、あっさりと接続できた。
まさか、JDBCが対応していないとは。
Hangouts Chatの一回の投稿で書ける文字数は、半角4000文字以内。
(メールで送られてきた内容をシェアしようとしたら、文字数制限ではじかれて発覚した。)
Notice: Google Fusion Tables Turndown
https://support.google.com/fusiontables/answer/9185417?hl=en
Googleより、「Fusion Tables」を廃止するとメール通知があった。「Fusion Tables」の廃止日は、2019年12月3日とのこと。2019年8月より、MAP APIでは警告が表示される。データダウンロードのためのGoogle Takeoutは2019年3月から提供されるとのこと。
現実的な移行先は、Googleスプレッドシートか、Google Cloud SQL。Cloud SQLは、利用料金がかかってしまうので、無料というわけにはいかない。かつ、使い勝手が大きく変わるので、辛いかも。データの可視化は、GoogleデータポータルからCloud SQLにつなげてやるのがよさそう。
Hangouts ChatのチャットボットをGASで作る場合、カードの中のボタンをクリックしたときに発生するイベントは、onCardClick()イベント。
カードに設定したボタンの`actionMethodName`で設定したをユニークにすることで、複数のボタンを識別することができる。
/**
* Card click event handler
**/
function onCardClick(e) {
// button is clicked.
if (e.action.actionMethodName === '****') {
return ******;
}
}
JSON形式のテキストをJSONとして扱うには、テキストをJSONオブジェクトに変換(パース)する必要がある。 JSON.parse() 関数を使用して、JSON形式のテキストをJSONオブジェクトに変換する。 これを行うことで、JSONを扱う関数などにJSONデータとして、値を渡すことできるようになる。(Hangouts Chatへの応答はJSONでデータを作って返す必要があり、それを関数などで作ろうとするとJSONオブジェクトにパースする場面がでた)
var jsonObj = JSON.parse(JSON形式のテキスト);
例) Chat Bot用に実際にJSON形式のテキストをつくり、JSONオブジェクトにする
// JSON形式のテキストを作る
var jsonText = "";
jsonText += '{';
jsonText += '"header": {\n';
jsonText += '"title": "タイトル", \n';
jsonText += '"subtitle": "サブタイトル"\n';
jsonText += '}\n';
jsonText += '}\n';
// JSON形式のテキストを、JSONオブジェクトに変換する
var jsonObj = JSON.parse(jsonText);
Hangouts Chatのチャットボットのカードのテキストフィールドで使えるタグ。
太字 Bold 斜体 Italic 下線 Underline 取り消し線 Strikethroughフォントカラー Font Color リンク Hyperlink 改行 Line Break
参考: https://developers.google.com/hangouts/chat/reference/message-formats/cards
以下のように、関数に引数を渡す場合、引数hogeの型によって、値渡しか、参照渡しかが決まる。
function func1(引数) {
。。。。
}
引数が、数値、文字列、真偽値の場合は、値渡し(値を複製して、関数に渡す)。
引数が、オブジェクト、配列の場合は、参照渡し(引数に指定したものが、書き変わる)。
※これは、GASの特性ではなく、JavaScriptの仕様。
GAS(GoogleAppsScript)の比較演算子。JavaScriptと同じ。
| == | 等しい | A==B | AとBは等しい |
| != | 等しくない | A!=B | AとBは等しくない |
| < | より小さい | A<B | AはBより小さい |
| <= | 以下 | A<=B | AはB以下 |
| > | より大きい | A>B | AはBより大きい |
| >= | 以上 | A>=B | AはB以上 |