Spreadsheet에서 관리하는 TODO를 GAS를 사용하여 슬랙에 리마인드
14538 단어 슬랙todospreadsheetgas
개요
매월 1 개 정도는 기사 책이라든지, 유급이 능숙하게 잡히지 않아 기한이 오기 전에 정리해 버터 버터 잡으면 힘들기 때문에 매월 1회는 취하자-라든지
정기적으로하지 않으면 안되지만 잊어 버리는 경향이나 설문지
리마인드해도 리마인드하는 것조차 잊어 버리므로, 팀 모두 정리해 리마인드 하는 스크립트를 만들었습니다.
스프레드시트로 관리하는 것으로, 자신만이 아니고 다른 누군가가 알아차리고 추가할 수 있어 운용할 수 있다는 것이 꽤 좋다고 생각하고 있다.
그리고 개인적으로 ○○씨는 이미 끝나고 있는지 말하는 몰입이 효과가 있다.
TODO 관리할 Spreadsheet 형식
다음 형식으로 TODO
라는 이름으로 만들어 스크립트 편집기에 소스 코드를 붙이면 아마 움직입니다.
소스 코드
gasvar 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#[email protected]');
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.)
다음 형식으로
TODO
라는 이름으로 만들어 스크립트 편집기에 소스 코드를 붙이면 아마 움직입니다.소스 코드
gasvar 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#[email protected]');
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.)
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#[email protected]');
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);
}
사용자의 상세 화면을 내고 메뉴 같은 곳을 누르면 복사 할 수있는 것 같습니다.
참고
Google Apps Script에서 영업일을 결정하여 트리거를 만드는 방법
스프레드시트에서 관리하는 작업을 Slack에 리마인드하는 방법
Reference
이 문제에 관하여(Spreadsheet에서 관리하는 TODO를 GAS를 사용하여 슬랙에 리마인드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yo1106/items/5e7efc528c47a568b5bf
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Spreadsheet에서 관리하는 TODO를 GAS를 사용하여 슬랙에 리마인드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yo1106/items/5e7efc528c47a568b5bf텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)