现在盂兰盆节已经过去,我们开始感受到秋天的迹象,但天仍然很热。
2022年是观测历史上雨季结束最快的一年,每天都有报道称电力供需紧张的风险很高。
我认为这是每个人努力节约能源和用电的一个非常重要的时期,所以我试图通知每日电力预测松懈。
成品图
这一次,我使用了 GoogleAppsScript,因为我想轻松地执行计划执行。
实现如下。
- 创建 Slack 应用程序并生成身份验证令牌
- 有一篇文章对其进行了详细的解释,所以我将在本文中省略它。
- Slack API 推荐通证-Qiita
- 有一篇文章对其进行了详细的解释,所以我将在本文中省略它。
- 截屏实现
- 实现屏幕截图上传到 slack
- 定期设置
截屏实现
这次ApiFlash免费使用每月最多可拍摄 100 个屏幕截图的 API。
当您注册一个帐户时,将颁发一个 API 密钥,因此您只需将 API 密钥和您要截屏的 URL 发送到 API 即可。
这次由东电电力公司提供。电力预测目标。
https://api.apiflash.com/v1/urltoimage?access_key=【APIキー】&url=【取得したいURL】
在初始状态下,会返回这样指定的 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 行,您现在就可以通知电源紧张的松弛。
矿。 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);
}
参考
- 网站截图API | ApiFlash
- 电力预测|TEPCO Power Grid, Inc.|TEPCO Holdings, Inc.
- files.upload 方法 | Slack
- 上传文件到 Slack - Qiita
- Slack API 推荐通证-Qiita
原创声明:本文系作者授权爱码网发表,未经许可,不得转载;
原文地址:https://www.likecs.com/show-308624054.html