piyochannnnn
@piyochannnnn

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

チャットワークからスプレッドシートにgasでメッセージを反映したい

解決したいこと

チャットワークにメッセージを入力してスプレッドシートに反映したいです。

こちらの記事を参考に設定しました。
https://note.com/gasnao703/n/nf5c894093ff0

参考コードをそのまま貼り付けて同様の設定をしていますが全く反映されません。
解決方法を知りたいです。

該当するソースコード

function doPost(e) {
 const sp = SpreadsheetApp.getActiveSpreadsheet();
 const sheet = sp.getSheetByName('log');

 const date = new Date();
 sheet.appendRow(['doPost', 'status', date, e]);

}

スクリーンショット 2021-10-16 17.15.26.png
デプロイの際にGoogleアカウントでログインして許可設定はできています。

チャットワーク側の設定はこちらです。
スクリーンショット 2021-10-16 17.36.40.png

自分で試したこと

スプレッドシート側の共有設定など誰ても編集できるようになどしましたが、全く反応なしです。
チャットワークからメッセージを受け取ってスプレッドシートへ入力できていませんが、gasで作ったコードでスプレッドシートに文字を入力することはできています。

何かヒントなどあればアドバイスをお願いいたします!

0

1Answer

質問から、Chatwork自体の設定は特に問題なさそうに思われますので(ただ、念のためルームIDを確認してください)、このような場合は、まず、Google Apps Scriptサイドでエラーが発生しているかどうかを確認するのはいかがでしょうか。このために、下記のようにスクリプトを変更してからスクリプトエディタで直接実行してみてください。もしもlogのシートがアクティブスプレッドシート上に存在しない場合はエラーが発生します。また、スコープを制限していると、それに対するエラーも発生すると思われます。ところで、イベントオブジェクトeをそのまま値として出力させると、全ての値が見えません。そのため、一度文字列に変換してから出力する方が良いかと思われます。そこで、スクリプトのeJSON.stringify(e)に変更しました。

function doPost(e) {
  e = "sample";
  const sp = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = sp.getSheetByName('log');
  const date = new Date();
  sheet.appendRow(['doPost', 'status', date, JSON.stringify(e)]);
}

もしも上記で問題なくスプレッドシート上に行が追加されたようであれば、次にWeb Appsの設定を確認します。設定自体は、スクリプトを自分として実行し、アクセスできるユーザは全員と画像のような設定になっている場合は問題ありません。そうでなければ設定を修正してください。

次に、現在の最新のスクリプトを現在のデプロイしたWeb Appsへ反映させます。このとき、Chatwork側で既にWeb Apps のURLが保存されているようであれば、そのデプロイに対して最新のスクリプトを反映させます。このための方法は、こちらで確認できます。

これらの方法を使って、こちらでテストを行いますと、特に問題なくスプレッドシートへイベントオブジェクトが書き込まれました。もしも上記の確認で問題が解決しない場合は謝罪します。

0Like

Comments

  1. @piyochannnnn

    Questioner

    回答ありがとうございます!
    いただいたコードでスクリプトエディタで直接実行した場合、エラーが出てしまいました。

    TypeError: Cannot read property 'appendRow' of null
    doPost @ コード.gs:6

    getSheetByName('log')についてシートのタブ名をlogにしていなかったことが原因でした。
    そのように変更して無事書き込むことができました!
    アドバイスいただきありがとうございました。
  2. ご返事ありがとうございます。無事問題が解決したとのことで安心しました。

Your answer might help someone💌