@Jomonnn

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!

RSSフィード (Googleアラート) を、GAS経由でGoogleチャットに連携する方法を教えてください

解決したいこと

RSSフィードが更新されるタイミングで、Googleチャットに送信するコードをGASで作成しています。
フィードとWebhook URLは一部変えていますが、以下のコードでエラーが出てしまいます。

該当するソースコード

function sendAlert() {
  var url = "https://www.google.co.jp/alerts/feeds/XXXXX";
  var response = UrlFetchApp.fetch(url);
  var xml = response.getContentText();
  var document = XmlService.parse(xml);
  var root = document.getRootElement();
  var entries = root.getChildren("entry");
  var message = "";
  for (var i = 0; i < entries.length; i++) {
    var entry = entries[i];
    var title = entry.getChildText("title");
    var link = entry.getChild("link").getAttribute("href").getValue();
    message += title + "\n" + link + "\n\n";
  }
  var options = {
    "method": "post",
    "headers": {
      "Content-Type": "application/json; charset=UTF-8"
    },
    "payload": JSON.stringify({
      "text": message
    })
  };
  UrlFetchApp.fetch("https://chat.googleapis.com/v1/spaces/AAAATMdVpE0/messages?key=XXXXX", options);
}

エラー

Exception: Request failed for https://chat.googleapis.com returned code 400. Truncated server response: {
  "error": {
    "code": 400,
    "message": "Message cannot be empty.",
    "status": "INVALID_ARGUMENT"
  }
}
 (use muteHttpExceptions option to examine full response)
sendAlert	@ コード.gs:24

お手数ですがご教示お願いいたします。

0 likes

1Answer

エラー内容を見るとGASへのfetchの問題ではなく
RSSからのデータ受信で失敗しているもしくはRSSが空であることが予想されます。

ご提示いただいたソースとエラー内容だけでは確定できないので

14行目の後(for分の後ろ)でmessageが空になっていないことを確認したり
3行目の後でresponseの中身をログに出力して確認してみてください。

2Like

Your answer might help someone💌