现在盂兰盆节已经过去,我们开始感受到秋天的迹象,但天仍然很热。
2022年是观测历史上雨季结束最快的一年,每天都有报道称电力供需紧张的风险很高。

我认为这是每个人努力节约能源和用电的一个非常重要的时期,所以我试图通知每日电力预测松懈。

成品图

たった20行で電力ひっ迫状況をslackへ通知する

这一次,我使用了 GoogleAppsScript,因为我想轻松地执行计划执行。
实现如下。

  • 创建 Slack 应用程序并生成身份验证令牌
    • 有一篇文章对其进行了详细的解释,所以我将在本文中省略它。
      • Slack API 推荐通证-Qiita
  • 截屏实现
  • 实现屏幕截图上传到 slack
  • 定期设置

截屏实现

这次ApiFlash免费使用每月最多可拍摄 100 个屏幕截图的 API。
当您注册一个帐户时,将颁发一个 API 密钥,因此您只需将 API 密钥和您要截屏的 URL 发送到 API 即可。

这次由东电电力公司提供。电力预测目标。

https://api.apiflash.com/v1/urltoimage?access_key=【APIキー】&url=【取得したいURL】
たった20行で電力ひっ迫状況をslackへ通知する

在初始状态下,会返回这样指定的 URL 的截图。
如果此时未指定任何内容,则大小将为 1920x1080px。

您可以通过指定 API 参数来指定各种内容。

参数名称 初始值 解释
格式 JPEG 指定要捕获的图像类型。可以指定 jpeg、png 和 webp。
元素 捕获与给定 CSS 选择器匹配的第一个元素的屏幕截图。
等待,直至 网络空闲 等到满足指定条件并假设页面已完成加载。
可以指定以下三个标准。
dom_loaded 等待 HTML 文档完全加载,而不是等待样式表或图像完成加载。
page_loaded 等待整个页面加载,包括样式表和图像等依赖资源。
network_idle 等待整个页面加载完毕并且网络空闲(网络连接不再活动)。
css 捕获时将插入网页的 CSS 字符串。
此 CSS 字符串必须经过 URL 编码。

除此之外,还可以指定各种参数。
对于那些有兴趣的人ApiFlash 的 API 文档请参阅。

实现屏幕截图上传到松弛

现在我们可以通过将上述参数与 GoyoGoyo 结合起来捕获完成的图像,接下来我们将实现要发布到 slack 的部分。

只需从获取的图像文件中获取一个 blob 对象并将其扔给https://slack.com/api/files.uploadPOST


const response = UrlFetchApp.fetch("【画像のURL】");
const blob = response.getBlob();

const PAYLOAD = {
  'token'     : "【slaskの認証トークン】",
  'file'      : blob,
  'channels'  : "【投稿したいチャンネルのID】",
  'title'     : "【アップする画像のタイトル】",
};

const OPTIONS = { 'method' : 'post', 'payload': PAYLOAD };
const result = UrlFetchApp.fetch('https://slack.com/api/files.upload', OPTIONS);

计划执行设置

最后,将 GoogleAppsScript 触发器设置为定期运行。

たった20行で電力ひっ迫状況をslackへ通知する

完全的

而已!
只需 20 行,您现在就可以通知电源紧张的松弛。

矿。 GS
function getElectricityForecast() {
  const API_KEY = "【APIキー】";
  const TARGET_URL = "https://www.tepco.co.jp/forecast/";
  const API_URL = "https://api.apiflash.com/v1/urltoimage";
  const CSS_SELECTOR = "div.inner";
  const CSS_STYLES = "div.day_area.aven%7Bdisplay%3Anone%3B%7D%23content-forecast+.tab_box+.next_day%7Bdisplay%3Anone+%21important%3B%7D%23content-forecast+.tab_box+.inner%7Bpadding%3A15px+%21important%3B%7D";
  const CAPTURING_URL = `${API_URL}?access_key=${API_KEY}&wait_until=page_loaded&url=${TARGET_URL}&element=${CSS_SELECTOR}&css=${CSS_STYLES}`;

  const response = UrlFetchApp.fetch(CAPTURING_URL);
  const blob = response.getBlob();

  const PAYLOAD = {
    'token'     : "【slaskの認証トークン】",
    'file'      : blob,
    'channels'  : "【投稿したいチャンネルのID】",
    'title'     : "本日の電力使用状況",
  };

  const OPTIONS = { 'method' : 'post', 'payload': PAYLOAD };
  const result = UrlFetchApp.fetch('https://slack.com/api/files.upload', OPTIONS);
}

参考


原创声明:本文系作者授权爱码网发表,未经许可,不得转载;

原文地址:https://www.likecs.com/show-308624054.html

相关文章: