質問: JSON.parse(strRespons.getContentText()); //文字列をJSON形式として解析しJSONオブジェクトとして返す for each(var obj in json){ Logger.log(obj.body); } for(var i=1; i
回答: > > 削除したいメッセIDは下記で取得済みです > > ・100個のメッセIDをシートに記載している > > ・その範囲を{message_id}に入れたい > > ・削除して再度取得→削除を繰り返して300件ほどのメッセをなくしたい > > > 早く回答してほしいという状況は質問者様ご自身には、どういう戦術で早く回答させるかというゲームなんです。 「メッセ」とか「スプシー」とか自分が便利なだけの略語(分かるやろというスタンス)とか、公式APIへのリンクを貼っていないこととか、chatworkの制約で一回に100個しか取れない仕様を秘匿していることとかは、このゲームにおいて不利なスタンスです。 (最後の点は致命的で、なぜ100個しかとってないの?なぜ一々削除して取得を繰り返さなければならないの?なぜわざわざ複雑なコードにしなきゃいけないの?というのが、質問者様が100個で面倒臭くなっただけと思われたら回答する人はいなくなるでしょう) 検証していないですがAPIに準拠すればこれで消えるはず。うまく行けば、bulkDelete()のあとgetMessages()を再度実行して、bulkDelete();getMessages();bulkDelete();で消えると思われる。 ただし、リクエスト間隔とか考えてないので過剰なアクセスで蹴られるかもしれない。 かといって、コメントアウトしているような愚直なsleepをしてしまうと、長時間実行になり、gas側で止められる(1スクリプトの継続が何分かになると長すぎって怒られて強制停止される) ``` function delMessage(id) { var params = { headers : {"X-ChatWorkToken" : 'トークン'}, method : "delete" }; var roomID = "ルームID"; var url = "https://api.chatwork.com/v2/rooms/" + roomID + "/messages/" + id; UrlFetchApp.fetch(url, params); // Utilities.sleep(1000); } function bulkDelete() { var mySS = SpreadsheetApp.openById("スプシーxxxxx"); mySS.getSheetByName('シート24').getRange(2, 1,100,1).getValues().forEach(function(e){ delMessage(e[0]);}); } ```