Spreadsheet에서 관리하는 TODO를 GAS를 사용하여 슬랙에 리마인드
14538 단어 슬랙todospreadsheetgas
개요
매월 1 개 정도는 기사 책이라든지, 유급이 능숙하게 잡히지 않아 기한이 오기 전에 정리해 버터 버터 잡으면 힘들기 때문에 매월 1회는 취하자-라든지
정기적으로하지 않으면 안되지만 잊어 버리는 경향이나 설문지
리마인드해도 리마인드하는 것조차 잊어 버리므로, 팀 모두 정리해 리마인드 하는 스크립트를 만들었습니다.
스프레드시트로 관리하는 것으로, 자신만이 아니고 다른 누군가가 알아차리고 추가할 수 있어 운용할 수 있다는 것이 꽤 좋다고 생각하고 있다.
그리고 개인적으로 ○○씨는 이미 끝나고 있는지 말하는 몰입이 효과가 있다.
TODO 관리할 Spreadsheet 형식
다음 형식으로
TODO
라는 이름으로 만들어 스크립트 편집기에 소스 코드를 붙이면 아마 움직입니다.
소스 코드
gas
var SPREADSHEET = SpreadsheetApp.getActiveSpreadsheet();
var SHEET = SPREADSHEET.getSheetByName('TODO');
var SLACK_WEB_HOOK_URL = 'ここにウェブフックのURL';
var TODO_SHEET = 'TODOが管理されてるシートのURL';
function main() {
const today = new Date();
// 営業日以外はおとなしくしとく。
if (!isBusinessDay(today)) {
return;
}
const message = getReminderMessage()
if (message.length) {
message += "\n\n対応お願いします。"
message += "\n" + TODO_SHEET
postSlack(message)
}
}
function getReminderMessage() {
const range = SHEET.getRange('3:1001');
const today = new Date();
var message = []
range.getValues().forEach(function(row, rowIndex){
const notCompatible = []
if (typeof(row[1]) == 'object' && row[1].getTime() < today.getTime()) {
row.forEach(function(e, index) {
if (e == '未対応') {
notCompatible.push(getName(index+1))
}
})
if (notCompatible.length) {
message.push(row[0] + "の期日です。")
message.push(notCompatible.map(function(e) { return "<@" + e + ">" }).join(" "))
}
}
})
if (message.length) {
message.push("\n\n対応お願いします。")
message.push("\n" + TODO_SHEET)
}
return message.join("\n")
}
// 2行目に書いてるslackID取得するやつ
function getName(index) {
const slackIdRow = '2'
const range = SHEET.getRange(wmap_column_convert(index) + slackIdRow);
return range.getValue()
}
//列番号のアルファベット列名変換
function wmap_column_convert(colmun_number) {
var result = SHEET.getRange(1, colmun_number);
result = result.getA1Notation();
result = result.replace(/\d/,'');
return result;
}
// 営業日かどうか
function isBusinessDay(date){
if (date.getDay() == 0 || date.getDay() == 6) {
return false;
}
var calJa = CalendarApp.getCalendarById('ja.japanese#holiday@group.v.calendar.google.com');
return calJa.getEventsForDay(date).length === 0
}
function postSlack(message) {
var jsonData =
{
"link_names" : 1,
"text" : message
};
var payload = JSON.stringify(jsonData);
var options =
{
"method" : "post",
"contentType" : "application/json",
"payload" : payload
};
UrlFetchApp.fetch(SLACK_WEB_HOOK_URL, options);
}
slack의 사용자 ID를 얻는 방법
사용자의 상세 화면을 내고 메뉴 같은 곳을 누르면 복사 할 수있는 것 같습니다.

참고
Google Apps Script에서 영업일을 결정하여 트리거를 만드는 방법
스프레드시트에서 관리하는 작업을 Slack에 리마인드하는 방법
Reference
이 문제에 관하여(Spreadsheet에서 관리하는 TODO를 GAS를 사용하여 슬랙에 리마인드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yo1106/items/5e7efc528c47a568b5bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)