カテゴリー: GoogleAppsScript

  • JSON型のテキストをJSONのオブジェクトにする

    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);
     
    
  • Chat Botのカード内のテキストフィールドで使えるタグ

    Hangouts Chatのチャットボットのカードのテキストフィールドで使えるタグ。

    太字 Bold            
    斜体 Italic    
    下線 Underline            
    取り消し線 Strikethrough    
    フォントカラー Font Color            
    リンク Hyperlink    
    改行 Line Break    

    参考: https://developers.google.com/hangouts/chat/reference/message-formats/cards

  • GASの関数は引数の型により値渡しと参照渡しが決まる

    以下のように、関数に引数を渡す場合、引数hogeの型によって、値渡しか、参照渡しかが決まる。

    function func1(引数) {
      。。。。
    }
    

    引数が、数値、文字列、真偽値の場合は、値渡し(値を複製して、関数に渡す)。

    引数が、オブジェクト、配列の場合は、参照渡し(引数に指定したものが、書き変わる)。

    ※これは、GASの特性ではなく、JavaScriptの仕様。

  • GASでIF文(条件分岐)

    GAS(Google Apps Script)での条件分岐の制御構文。IF文。

    if文は、条件の部分に書かれた処理が真の場合に、決まった処理を実行する。if文のパターンとして、おもに3種類があり、「else if」の部分は、いくつも増えてよい。(ただ、多数になるときはSwitch文の方が楽)

    (GASのif文は、JavaScriptのif文と同じ)

    パターン1: 条件が正しい(真)のときだけ実行する

    if ( 条件) {
        ここに、条件が真のときの処理を書く
    }
    

    パターン2: 条件が正しい(真)のときに実行する文と、条件がただしくなったとき(偽)のときに実行する

    if (条件) {
        ここに条件が真のときの処理を書く
    } else {
        ここに条件が偽のときの処理を書く
    }
    

    パターン3: 条件1が正しい(真)のときに実行する文と、条件2が正しい(真)のときに実行する文と、条件がただしくなったとき(偽)のときに実行する

    if (条件1) {
        ここに条件1が真のときの処理を書く
    } else if (条件2) {
        ここに条件2が真のときの処理を書く
    } else {
        ここに条件が偽のときの処理を書く
    }
    
  • GASの比較演算子

    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以上
  • Hangouts ChatのChat Botからカード型で返信を返す方法

    Hangouts ChatのChat Botからのメッセージは、JSONオブジェクトで内容を記述して返す。

    ポイントは、onMessage() で返す(return)内容を返すときに、return { “cards”: [ ここにJSON ]}; の形式で記述すること。

    とくに、cardsのあとの[]の中にJSONオブジェクトでプロパティを記述することが重要。

    サンプル

    ユーザからのメッセージが届いたら、カード型メッセージで返信を返す。

    /**
     * Responds to a MESSAGE event in Hangouts Chat.
     *
     * @param {Object} event the event object from Hangouts Chat
     *
     */
    function onMessage(event) {
    
      return {
    
        "cards": [
          {
            "header": {
              "title": "タイトル(カード型のメッセージを返信する)",
              "subtitle": "サブタイトル(画像も表示させてみる)",
              "imageUrl": "https://goo.gl/yKKjbw",
              "imageStyle": "IMAGE"
            }
          }
        ]
      };
    
    }
    
  • Hangouts ChatのChat Botがメッセージを送るときの形式

    Hangouts ChatのChat Botが送信するメッセージの形式は、JSONオブジェクト。JSONオブジェクトとして、送信することで、Chat API側でテキストメッセージやカード形式のメッセージに変換されて表示される。

  • GASでの変数の宣言

    GASでの変数の宣言は、JavaScriptと同じ。varキーワードを使う、型の宣言はいらない。

     var 変数名;
    

    定数の宣言

    定数の宣言も、JavaScriptと同じ。constキーワードを使う、型の宣言はいらない。定数を使う場合は、constキーワードでの宣言と同時に値の代入を行う。

     const 変数名 = 値;
    

    定数の宣言と同時に値を代入するのは、定数への再代入(書き換え)はできないため。

  • Chat Botとメッセージのやり取りをしているときに発生しているイベント

    Hangouts Chatで、GASで作ったChat Botと会話するとき、Chat BotのGASプログラム側では”onMessage(event)”関数が呼び出されている。この関数の中で、ユーザからの送られてきたテキストの中身を処理することで、ユーザと様々なやり取りをすることができる。

    function onMessage(event) {
      return { "text": "このメッセージをチャットで返す" };
    }
    

    ちなみに、ユーザ側が入力した内容は、`event.message.text`で取得することができる。

  • Hangouts ChatでChat Botを呼び出したときに発生するイベント

    Hangouts Chatで、GASで作ったChat Botを呼び出すとき、関数のonAddToSpace(event)がHangouts Chat APIから呼び出される。このイベントが発生するのは、Chat Botを追加したときのみ。

    function onAddToSpace(event) {
      return { "text": "このメッセージを返す" };
    }
    

    ■Googleのサンプルプログラム。

    function onAddToSpace(event) {
      var message = "";
    
      if (event.space.type == "DM") {
        message = "Thank you for adding me to a DM, " + event.user.displayName + "!";
      } else {
        message = "Thank you for adding me to " + event.space.displayName;
      }
    
      return { "text": message };
    }
    

    eventは、オブジェクトで、Hangouts Chatから渡される。このオブジェクトの中に、ユーザ名やDMかどうかなどの情報が入っている。

    returnで指定した内容がユーザのチャットに返信される。