GAS에서 Backlog의 만료 티켓을 정시에 자동으로 픽업 Chatwork에 통지
하고 싶은 일
제목대로입니다. (소위 Backlog 경찰)
가정 독자
처리 개요
참고로 한 기사와 메모
GAS로 만들기 #Backlog 경찰 - 암흑 엔지니어 블로그
스크립트의 베이스는 이쪽의 기사를 참고로 했습니다. 감사합니다.
과제 목록 얻기 | Backlog Developer API | Nulab
본가의 사이트. 세세한 API 사양이나 쿼리 문자열을 만드는 방법은 여기에서.
Backlog API를 사용해 보았습니다 - Qiita
BacklogAPI의 티켓 검색 API를 이용할 때 각 프로젝트 ID를 지정해야 합니다만, 그 찾는 방법은 여기에서 발견했습니다.
【GAS】Backlog의 잔여 태스크(과제 티켓)를 GAS로 취득해 채팅 워크에 흘린다 - Qiita
나중에 발견했는데, 여기에서 좋았을지도 모릅니다. 이번에는 스프레드 시트에 전기가 필요 없었기 때문에 일단 (땀)
스크립트
부적절한 경우 부드럽게 안내하십시오
function BacklogPolice() {
var response = fetchBacklogIssues();
console.log(response.length);
postChatwork(JSON.parse(response));
}
var backlogNamespace = 'XXX';//お使いのBacklogのネームスペースを入れてください
var backlogUrl = 'https://' + backlogNamespace + '.backlog.jp/';
function fetchBacklogIssues() {
var baseUrl = backlogUrl + 'api/v2/issues';
var apiKey = 'XXXXXX'//BacklogのAPIキーを入れて下さい
// 取得対象のプロジェクトIDのリストを指定
var projectIds = [X];//対象のプロジェクトIDを入れて下さい
var statusIds = [0, 1, 2, 3];
var sysdate = new Date();
sysdate.setDate(sysdate.getDate() - 1);
var params = {
'apiKey': apiKey,
'dueDateUntil': formatDate(sysdate)
};
for (var i = 0; i < projectIds.length; i++) {
params['projectId[' + i + ']'] = projectIds[i];
}
for (var i = 0; i < statusIds.length; i++) {
params['statusId[' + i + ']'] = statusIds[i];
}
var paramString = '';
for (var key in params) {
if (0 < paramString.length) {
paramString += '&';
}
paramString += key + '=' + params[key];
}
// paramString += '&sort=assignee&dueDate&order=true';//期限日順
paramString += '&sort=assignee';//担当者順
return UrlFetchApp.fetch(baseUrl + '?' + paramString);
}
function postChatwork(issues) {
if (issues.length <= 0) {
return;
}
console.log(issues.length);
var token = 'XXXXXXXXXXXX'; // ここにトークンを入力してください
var roomId = 'XXXXXXXXXX'; // ここに投稿したい部屋のIDを入力してください
var subject = 'Backlogのタスクが期限切れになっています!速やかにタスクを処理するか、期限日を調整してください。'//この辺はご自由に
var body = '[info][title]' + subject + '[/title]' + createPostMessage(issues) + '[/info]';
var payload = {
'body': body
}
var headers = {
'X-ChatWorkToken': token
}
var options = {
'method' : 'POST',
'payload' : payload,
'headers' : headers
}
var url = 'https://api.chatwork.com/v2/rooms/' + roomId + '/messages';
UrlFetchApp.fetch(url, options);
}
function createPostMessage(issues) {
var message = '';
for (var i = 0; i < issues.length; i++) {
var issue = issues[i];
message += formatDate(new Date(issue.dueDate)) + ', ';
message += issue.assignee.name + ', ';
message += '[' + issue.status.name + '], ';
message += issue.summary+ ', ';
message += backlogUrl + 'view/' + issue.issueKey + '\n[hr]\n';
}
return message;
}
function formatDate(date) {
var format = 'YYYY-MM-DD';
format = format.replace(/YYYY/g, date.getFullYear());
format = format.replace(/MM/g, ('0' + (date.getMonth() + 1)).slice(-2));
format = format.replace(/DD/g, ('0' + date.getDate()).slice(-2));
return format;
}
GAS 트리거 설정(스케줄 설정)
GAS에서 QiitaOrganization 회원의 새 소식을 자동으로 채워 Chatwork에 알리기 - Qiita
에 쓴 절차와 거의 같습니다. 이번은 매일 아침 6~7시경에 넣었습니다.
마지막으로
역시 GAS는 편리하네요!
Reference
이 문제에 관하여(GAS에서 Backlog의 만료 티켓을 정시에 자동으로 픽업 Chatwork에 통지), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yasuoyasuo/items/ac3a3adcaccffda7c108텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)