QiitaOrganization의 LGTM 수를 GAS로 Slack에 알립니다.
했던 일
QiitaOrganization 페이지에서 LGTM 수를 얻고
이런 식으로 매주 Slack에 통지.
왜 했는지
구현 메모
LGTM 수는 [feed] (/feed subscribe https://qiita.com/organizations/sousei-tech/activities.atom)에 포함되지 않았기 때문에 스크래핑으로 취득
Slack 알림은 Incoming Webhook을 사용합니다.
LGTM 수는 스프레드시트에 기록
매주 실행은 GAS의 트리거로 하고 있다.
코드(GAS)
스프레드시트에서 도구 → 스크립트 편집기를 엽니다.
아래를 복사하여 url과 webhook_url을 다시 쓰면 OK.
function notifyContributions() {
const url = 'QiitaOrganizationのURL'; // 例: https://qiita.com/organizations/sousei-tech
const webhook_url = "Incoming WebhookのURL"; // 例)https://hooks.slack.com/services/HOGE/FUGA/HOGA
const response = UrlFetchApp.fetch(url);
const html = response.getContentText();
let contributions;
// NOTE: HTML構成変わると動かなくなる。そのときはwebページをソース表示して該当箇所のHTMLを見つけて修正する。
// NOTE: 2020/3/10時点 "likesCount":1096,
const targetLeft = '"likesCount":';
const targetRight = ',';
let index = html.indexOf(targetLeft)
// Logger.log(index);
if (index !== -1) {
let tmp = html.substring(index + targetLeft.length);
index = tmp.indexOf(targetRight);
if (index !== -1) {
contributions = tmp.substring(0, index);
}
}
const book = SpreadsheetApp.getActiveSpreadsheet();
const sheet = book.getSheetByName("シート1");
const last_row = sheet.getDataRange().getLastRow();
const before_contributions = sheet.getRange(last_row, 2).getValue();
const target_row = last_row + 1;
sheet.getRange(target_row, 1).setValue(new Date());
sheet.getRange(target_row, 2).setValue(contributions);
// Logger.log(before_contributions);
const message = contributions + ' LGTM :tada: (前回から+' + (contributions - before_contributions) + ')' + "\n" + url;
// エラーで動かなくなったときはここでリターンして調査するとよい。(Slackへの通知をやめる)
// Logger.log(contributions);
// return;
const jsonData = {
"text" : message,
"link_names" : 1,
};
const payload = JSON.stringify(jsonData);
const options = {
"method" : "post",
"contentType" : "application/json",
"payload" : payload,
};
UrlFetchApp.fetch(webhook_url, options);
덤
직원의 소식을 통지하고 싶은 경우는 slack로 feed를 구독해 두면 OK! (이것도 GAS로 구현할까 싶었던 😅)
/feed subscribe https://qiita.com/organizations/sousei-tech/activities.atom
사이고에게
그럼 멋진 QiitaOrganization 생활을.
Reference
이 문제에 관하여(QiitaOrganization의 LGTM 수를 GAS로 Slack에 알립니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naoqoo2/items/427fbdc077d6b3a296e4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)