質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.91%

GASとチャットワークAPIを利用して、特定のルームで流したメッセージを翻訳して同じルームに返したい。

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 281

sakanami48

score 1

前提・実現したいこと

投稿者はプログラミング歴が2ヵ月程度です。
こちらのサイトを参考しにています。
https://tonari-it.com/gas-chatwork-translate/

以下は実行済みです。
・ライブラリにChatWorkClientを追加している
・APIトークンを取得している
・ルームIDを取得している

【実現したいこと】
GASとチャットワークのAPIを利用して、チャットワークの特定のグループチャットに送ったメッセージを翻訳して、同じグループに結果を返すというプログラミングをしたい。

発生している問題・エラーメッセージ

ReferenceError: 「fetchMessage」が定義されていません。(行 6、ファイル「コード」)

該当のソースコード

function translateChat() {

  var token = 'APIトークン'; //チャットワークAPIトークン
  var room_id = XXXXXX; //特定のグループチャットのルームID

  var json = fetchMessage(token,room_id); //特定のグループチャットのメッセージを取得

  /* 各メッセージについて 繰り返す */
  for each(var obj in json){

      var arr = obj.body.split(';'); //セミコロンでsplitして配列に格納
      var result = LanguageApp.translate(arr[1], "", arr[0]); //翻訳

      var body = "[rp aid=" + obj.account.account_id
        + " to=" + room_id
        + "-" + obj.message_id
        + "] " + obj.account.name
        + "さん[info]翻訳結果:" + result + "[/info]"; //チャットワークに送るテキスト

      sendMessage(token,room_id,body); //チャットワークにメッセージを送る
    }
}

試したこと

このエラーが消えない限りGASでプロジェクトの実行ができないので、そもそも構文ミスだと見当をつけてあたっています。
fetchMessageの書き方がおかしいのかと思い、他のサイトや記事を読んで確認したのですが、どこが間違っているか自分では特定できませんでした。

補足情報(FW/ツールのバージョンなど)

GASは今年2月にデフォルトのランタイムがv8 engineに変更になっていますが、様々な書き方の変更がありそうで、また初心者で自らコードを変更できる自信がなかったので、元のRhinoランタイムに環境を戻しています。
こちらを参考にしています。
https://developers.google.com/apps-script/guides/v8-runtime?fbclid=IwAR02_1ymS1uC5qvJnhJmfukCHQHJz8Z_yLEJosG1WyM9PKWBa70w989tPV0

使っているツールのバージョンは最新だと思われます。

お手数おかけしますがアドバイスいただけると幸いです。よろしくお願いいたします。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ReferenceError: 「fetchMessage」が定義されていません。(行 6、ファイル「コード」)

のメッセージにあるように fetchMessage は、どこかで関数を定義されていますか? (自分で関数を書いているのでしょうか?)


https://tonari-it.com/gas-chatwork-translate/ を参考にしたのであれば、

いくつか独自の関数がありますが 
fetchMessageはチャットワークの特定のルームから未取得のメッセージをjson形式で取得してくる関数

と書かれているので 通常は自分で作成する関数です。


探してみると 参考にされた URL の続きと思われる記事に 【GAS】チャットワークのメッセージを取り出す関数とメッセージを送る関数 があり、fetchMessage のコードが書かれていますので、参考にしてみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/24 11:37

    自分では定義していたつもりだったのですが、function fetchMessage()が書かれていないという意味だったのですね。
    そこの改善ができたのですが、今度は次々にエラーが発生しています。一つ一つ解決できる様に頑張ります。
    とても勉強になりました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.91%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る