GAS를 사용하여 스프레드 시트를 업데이트 할 때 Slack 알림을 건너 뛰는 bot를 만들었습니다.
10807 단어 자바스크립트slackbotGoogleAppsScriptgas슬랙
이미지는 시트의 G 열이 업데이트 될 때 "기업 이름", "직원 수"및 "상태"를 Slack에 알립니다.
Github
matsukazu1112/spreadsheet_notification
거친 흐름
1. GAS 시작
스프레드시트 위의 막대에서 "도구"→ "스크립트 편집기"로 시작할 수 있습니다.
2. Incoming Webhook에서 Slack과 GAS의 연동 설정
절차는 이 기사을 참조했습니다.
3. GAS 스크립트 실행 트리거 생성
「편집」→「현재 프로젝트의 트리거」를 선택.
오른쪽 하단의 "트리거 추가"를 선택.
실행할 함수와 이벤트 소스를 설정합니다. 이 경우 스프레드시트 변경을 트리거로 저장합니다.
4. 코드 구현
여기에서가 프로덕션입니다.
최초로 스프레드 시트로부터 변경의 내용을 취득해 오는 메소드를 정의.
/**
* スプレッドシートから必要なデータを取り出す
*
* @ param object e
* @ return data
*/
function getValue(e){
var notifySheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = SpreadsheetApp.getActiveSheet();
var my_cell = active_sheet.getActiveCell();
var active_sheet_column = my_cell.getColumn();
var rowNum = my_cell.getRow();
var data =
'企業名:'+ notifySheet.getRange('B' + rowNum).getValue()+ '\n'
+'従業員数:' + notifySheet.getRange('C' + rowNum).getValue() + '\n'
+'案件ステータス:' + notifySheet.getRange('G' + rowNum).getValue() + '\n'
+'https://docs.google.com/spreadsheets/hogehoge';
if (active_sheet_column !== status_column){
return;
}
return data;
}
getValue라는 함수로, data 변수로 취득한 내용을, 나중에 기재하는 메인 처리에 값을 돌려주고 있습니다.
이번에는 스프레드 시트의 G 열이 편집되었을 때만 알림을 보내고 싶으므로 if 문을 사용하여 활성 시트의 열이 status_culumn (= 7 열과 별도로 정의되어 있음)과 일치하는 경우에만 , 데이터를 반환하도록 설정했습니다.
/**
* スラックにPostする際の詳細の設定
*
* @ param object value
* @ return void
*/
function postMessage(value){
var options = {
'method': 'post',
'headers': {'Content-type': 'application/json'},
'payload' : JSON.stringify({
'channel' : '#チャンネル名',
'attachments':[
{
'fallback': '代理店案件アップデート通知',
'color': '#36a64f',
'title': '代理店が案件を更新しました',
'title_link': 'https://docs.google.com/spreadsheets/hogehoge',
'text': value,
}
]
})
};
UrlFetchApp.fetch("https://hooks.slack.com/services/hogehoge", options);
}
여기에서는 Slack에 게시할 때 고급 설정을 정의합니다. 이 기사 를 참고했습니다.
위에서 정의해 온 처리와 그 반환값을 아래의 메인 처리를 통해 수행하고 있습니다. e는 스프레드시트에서 얻은 값입니다. e를 getValue 메소드에 전달하고 그 결과를 value라는 변수로 정의합니다. 또한 앞서 언급했듯이 G 열 이외의 데이터를 검색하고 매번 Slack에 알림을 보내 버리면 우울하기 때문에 value 값이있을 때만 처리를 수행한다는 것을 if 문으로 정의합니다. 있습니다.
/**
* メイン処理
*
* @ param object e
* @ return void
*/
function postSheetChange(e){
const value = getValue(e);
if (value) {
postMessage(value);
}
}
위의 방법으로 무사히 스프레드시트의 G열을 편집했을 때 Slack에게 알림이 날아갔습니다!
Reference
이 문제에 관하여(GAS를 사용하여 스프레드 시트를 업데이트 할 때 Slack 알림을 건너 뛰는 bot를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/matsukazu1112/items/d47e81d4c4d08d2147d3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
절차는 이 기사을 참조했습니다.
3. GAS 스크립트 실행 트리거 생성
「편집」→「현재 프로젝트의 트리거」를 선택.
오른쪽 하단의 "트리거 추가"를 선택.
실행할 함수와 이벤트 소스를 설정합니다. 이 경우 스프레드시트 변경을 트리거로 저장합니다.
4. 코드 구현
여기에서가 프로덕션입니다.
최초로 스프레드 시트로부터 변경의 내용을 취득해 오는 메소드를 정의.
/**
* スプレッドシートから必要なデータを取り出す
*
* @ param object e
* @ return data
*/
function getValue(e){
var notifySheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = SpreadsheetApp.getActiveSheet();
var my_cell = active_sheet.getActiveCell();
var active_sheet_column = my_cell.getColumn();
var rowNum = my_cell.getRow();
var data =
'企業名:'+ notifySheet.getRange('B' + rowNum).getValue()+ '\n'
+'従業員数:' + notifySheet.getRange('C' + rowNum).getValue() + '\n'
+'案件ステータス:' + notifySheet.getRange('G' + rowNum).getValue() + '\n'
+'https://docs.google.com/spreadsheets/hogehoge';
if (active_sheet_column !== status_column){
return;
}
return data;
}
getValue라는 함수로, data 변수로 취득한 내용을, 나중에 기재하는 메인 처리에 값을 돌려주고 있습니다.
이번에는 스프레드 시트의 G 열이 편집되었을 때만 알림을 보내고 싶으므로 if 문을 사용하여 활성 시트의 열이 status_culumn (= 7 열과 별도로 정의되어 있음)과 일치하는 경우에만 , 데이터를 반환하도록 설정했습니다.
/**
* スラックにPostする際の詳細の設定
*
* @ param object value
* @ return void
*/
function postMessage(value){
var options = {
'method': 'post',
'headers': {'Content-type': 'application/json'},
'payload' : JSON.stringify({
'channel' : '#チャンネル名',
'attachments':[
{
'fallback': '代理店案件アップデート通知',
'color': '#36a64f',
'title': '代理店が案件を更新しました',
'title_link': 'https://docs.google.com/spreadsheets/hogehoge',
'text': value,
}
]
})
};
UrlFetchApp.fetch("https://hooks.slack.com/services/hogehoge", options);
}
여기에서는 Slack에 게시할 때 고급 설정을 정의합니다. 이 기사 를 참고했습니다.
위에서 정의해 온 처리와 그 반환값을 아래의 메인 처리를 통해 수행하고 있습니다. e는 스프레드시트에서 얻은 값입니다. e를 getValue 메소드에 전달하고 그 결과를 value라는 변수로 정의합니다. 또한 앞서 언급했듯이 G 열 이외의 데이터를 검색하고 매번 Slack에 알림을 보내 버리면 우울하기 때문에 value 값이있을 때만 처리를 수행한다는 것을 if 문으로 정의합니다. 있습니다.
/**
* メイン処理
*
* @ param object e
* @ return void
*/
function postSheetChange(e){
const value = getValue(e);
if (value) {
postMessage(value);
}
}
위의 방법으로 무사히 스프레드시트의 G열을 편집했을 때 Slack에게 알림이 날아갔습니다!
Reference
이 문제에 관하여(GAS를 사용하여 스프레드 시트를 업데이트 할 때 Slack 알림을 건너 뛰는 bot를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/matsukazu1112/items/d47e81d4c4d08d2147d3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
여기에서가 프로덕션입니다.
최초로 스프레드 시트로부터 변경의 내용을 취득해 오는 메소드를 정의.
/**
* スプレッドシートから必要なデータを取り出す
*
* @ param object e
* @ return data
*/
function getValue(e){
var notifySheet = SpreadsheetApp.getActiveSpreadsheet();
var active_sheet = SpreadsheetApp.getActiveSheet();
var my_cell = active_sheet.getActiveCell();
var active_sheet_column = my_cell.getColumn();
var rowNum = my_cell.getRow();
var data =
'企業名:'+ notifySheet.getRange('B' + rowNum).getValue()+ '\n'
+'従業員数:' + notifySheet.getRange('C' + rowNum).getValue() + '\n'
+'案件ステータス:' + notifySheet.getRange('G' + rowNum).getValue() + '\n'
+'https://docs.google.com/spreadsheets/hogehoge';
if (active_sheet_column !== status_column){
return;
}
return data;
}
getValue라는 함수로, data 변수로 취득한 내용을, 나중에 기재하는 메인 처리에 값을 돌려주고 있습니다.
이번에는 스프레드 시트의 G 열이 편집되었을 때만 알림을 보내고 싶으므로 if 문을 사용하여 활성 시트의 열이 status_culumn (= 7 열과 별도로 정의되어 있음)과 일치하는 경우에만 , 데이터를 반환하도록 설정했습니다.
/**
* スラックにPostする際の詳細の設定
*
* @ param object value
* @ return void
*/
function postMessage(value){
var options = {
'method': 'post',
'headers': {'Content-type': 'application/json'},
'payload' : JSON.stringify({
'channel' : '#チャンネル名',
'attachments':[
{
'fallback': '代理店案件アップデート通知',
'color': '#36a64f',
'title': '代理店が案件を更新しました',
'title_link': 'https://docs.google.com/spreadsheets/hogehoge',
'text': value,
}
]
})
};
UrlFetchApp.fetch("https://hooks.slack.com/services/hogehoge", options);
}
여기에서는 Slack에 게시할 때 고급 설정을 정의합니다. 이 기사 를 참고했습니다.
위에서 정의해 온 처리와 그 반환값을 아래의 메인 처리를 통해 수행하고 있습니다. e는 스프레드시트에서 얻은 값입니다. e를 getValue 메소드에 전달하고 그 결과를 value라는 변수로 정의합니다. 또한 앞서 언급했듯이 G 열 이외의 데이터를 검색하고 매번 Slack에 알림을 보내 버리면 우울하기 때문에 value 값이있을 때만 처리를 수행한다는 것을 if 문으로 정의합니다. 있습니다.
/**
* メイン処理
*
* @ param object e
* @ return void
*/
function postSheetChange(e){
const value = getValue(e);
if (value) {
postMessage(value);
}
}
위의 방법으로 무사히 스프레드시트의 G열을 편집했을 때 Slack에게 알림이 날아갔습니다!
Reference
이 문제에 관하여(GAS를 사용하여 스프레드 시트를 업데이트 할 때 Slack 알림을 건너 뛰는 bot를 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/matsukazu1112/items/d47e81d4c4d08d2147d3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)