Open2

GASで「サイトの日付が変わったらslack通知を飛ばす」

dodododo

設定してみたが、果たしてちゃんと動くのか。。様子見のためメモ。

コード

function extractDateFromHTML(htmlContent) {
  const cheerioCode = `
    var $ = Cheerio.load(Html);
    var dateElement = $('div._root_oq6og_1').find('h2._title_oq6og_7');
    var date = dateElement.text().trim();
    date;
  `;
  const result = eval(cheerioCode.replace('Html', JSON.stringify(htmlContent)));
  return result;
}

function sendWeeklyHoroscopeNotification() {
  const url = "https://shiitakeuranai.jp/weekly-horoscope/";
  const response = UrlFetchApp.fetch(url);
  const htmlContent = response.getContentText();

  const date = extractDateFromHTML(htmlContent);

  const webhookUrl = "https://app.slack.com/client/XXXXXXXXXXXXXXXXXXXx";
  const message = "【通知】週間しいたけ占いの日付が変わりました! https://shiitakeuranai.jp/weekly-horoscope/";

  const slackResponse = UrlFetchApp.fetch(webhookUrl, {
    method: "post",
    payload: JSON.stringify({ text: message }),
    contentType: "application/json"
  });
}

上記を動かすためにライブラリにCheerioを埋め込み

ライブラリID

1ReeQ6WO8kKNxoaA_O0XEQ589cIrRvEBA9qcWpNqdOP17i47u6N9M5Xh0

https://mowfile.com/2023/04/15/gas_-scraping/3081/

トリガー

時間主導で15分おきに設定
*毎週月曜更新だが、時間はばらばらなので正確なトリガーを設定することができないため

dodododo

通知が飛ばず。
以下のコードで再度様子を見る

function extractDateFromHTML(htmlContent) {
  const cheerioCode = `
    const cheerio = Cheerio.load(Html);
    const dateElement = cheerio('div._root_oq6og_1').find('h2._title_oq6og_7');
    const date = dateElement.text().trim();
    date;
  `;
  const result = eval(cheerioCode.replace('Html', '`' + htmlContent + '`'));
  return result;
}

function sendWeeklyHoroscopeNotification() {
  const url = "https://shiitakeuranai.jp/weekly-horoscope/";
  const response = UrlFetchApp.fetch(url);
  const htmlContent = response.getContentText();

  const date = extractDateFromHTML(htmlContent);

  const webhookUrl = "https://app.slack.com/client/T05DP6G6HB3/D05P63XL8VB?selected_team_id=T9N359AV9";
  const message = "【通知】週間しいたけ占いの日付が変わりました! https://shiitakeuranai.jp/weekly-horoscope/";

  const slackResponse = UrlFetchApp.fetch(webhookUrl, {
    method: "post",
    payload: JSON.stringify({ text: message }),
    contentType: "application/json"
  });
}```