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

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

新規登録して質問してみよう
ただいま回答率
85.37%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

0回答

110閲覧

GAS スプレッドシートにチャットワークのメッセージを保存するプログラムが、実行完了とされるのに保存されていない。

MMYYMRI

総合スコア0

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

1クリップ

投稿2024/11/07 02:48

編集2024/11/07 05:56

実現したいこと

チャットワークに送られたメッセージをスプレッドシートに自動で記録する。

発生している問題・分からないこと

エラーは発生せず実行完了となるのに、スプレッドシートにメッセージが記録されない。エラーメッセージも出ないので何が問題なのかわからない。

エラーメッセージ

error

1エラーは起きていないと表示されます

該当のソースコード

function chatwork_archive() { var api_token="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //ここにapiトークンを入力してください。 var room_id="xxxxxxxxxx"; //ここにメッセージ一覧を取得したいroom_idをいれてください var spreadsheetId = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; //スプレッドシートidを入力してください var params = { headers : {"X-ChatWorkToken" : api_token}, method : "get" }; var url = "https://api.chatwork.com/v2/rooms/" + room_id + "/messages?force=0"; //force=0は前回取得後に追加されたメッセージのみを取得 var response = UrlFetchApp.fetch(url, params); if(response.getContentText()){ const res_data= JSON.parse(response.getContentText()); var mySheet=SpreadsheetApp.openById(spreadsheetId).getSheetByName("log") var lastRow= mySheet.getLastRow()+1; for(let i=0;i<res_data.length;i++){ mySheet.getRange(lastRow,1).setValue(res_data[i]["message_id"]); mySheet.getRange(lastRow,2).setValue(res_data[i]["account"]["name"]); mySheet.getRange(lastRow,3).setValue(res_data[i]["body"]); mySheet.getRange(lastRow,4).setValue(Utilities.formatDate(new Date(res_data[i]["send_time"]*1000),"Asia/Tokyo", "yyyy/MM/dd: HH:mm:ss")); mySheet.getRange(lastRow,5).setValue(Utilities.formatDate(new Date(res_data[i]["update_time"]*1000), "Asia/Tokyo", "yyyy/MM/dd: HH:mm:ss")); lastRow++; }; }; };

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

・スプレッドシートのシート名を【log】でないものにしてエラーが出るか試しましたがエラーが出ずに実行完了となったので、そもそもスプレッドシートを取得出来ていないように思います。

・スプレッドシート自体を変更しましたが解決しませんでした。

補足

https://dokugaku-hiro-partsbox.com/chatwork-1-2/#toc4
上記のサイトのコードをそっくりそのままコピペして使用しています。

同じコードを使用して、2度は正常に動いたのですが、3つ目を作った際にこの現象が発生しました。

↓自分がログだと思って見ている画面なのですが合っていますでしょうか?
イメージ説明

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

YAmaGNZ

2024/11/07 03:27

ログなど出力するとかしてif文の中とかループがどのように実行されているのかを確認されてはどうですか?
MMYYMRI

2024/11/07 05:57

ログの出力方法があっているかわからないのですが、デバックからif文のところ(14行目)ブレークポイントを設定して見てみましたが、うまくいっている物と比較してもおかしな所は見つけられませんでした。質問文に自分が見た画面を添付してみました。
YAmaGNZ

2024/11/07 06:09

14行目がif文のところなのであれば、その次の行が実行されるかステップ実行するなり、そこにブレークポイントを設定するなりしてはどうですか? 実行して何も結果が得られないのであれば、if文の中が実行されていないとかfor文の中が実行されていないということだと思います。 ログの出力に関しても「GAS ログ出力」とでも検索すれば色々と情報が出てくるかと思います。 if文の中が実行されていないのであればresponse.getContentText()がどういう値となっているかを出力したり、for文の中が実行されないのであればループ条件となるres_dataがどうなっているかなど確認してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問