chatwork에서 출퇴근 정보를 google 스프레드 시트에 저장
배경
chatwork에서 출퇴근 게시물에서 자동으로 집계하고 싶다는 이야기가 들렸으므로 google apps script에서 동작 확인을 위한 스크립트를 만들어 보았습니다. chatwork에서 webhook을 등록하고 게시했을 때 google의 공개 URL을 호출하는 메커니즘은 경험이 있었기 때문에 쉽게 할 수 있다고 생각했지만, 의외로 망설였습니다. 그 이야기는 나중에. 그물 검색
Google Apps Script에서 채팅 작업의 타각 정보를 시트의 마지막 행에 추가하는 방법 라는 기사를 참고로 했습니다.
준비
직원 마스터를 다음과 같이 Google 스프레드시트로 만들 수 있습니다. 이것은 chatwork 계정 ID와 이름의 목록입니다. 시트 이름은 user_list입니다. 왜 직원 마스터가 필요하다고 말하면 chatwork에서 얻을 수있는 것은 계정 ID라는 숫자 정보이므로 그것을 스프레드 시트에 내뿜어도 무슨 엉망이되기 때문에 스프레드 시트에는 VLOOKUP 함수로 이름 가 표시되도록 직원 마스터를 만들어 둡니다.
chatwork에서 API 토큰을 가져옵니다.
테스트 스크립트 만들기
새롭게 근태 정보를 저장하는 Google 스프레드시트를 만듭니다. 그런 다음 도구 -> 스크립트 편집기를 선택하여 스크립트를 작성합니다.
chatwork에서 게시한 문자열에 '출근' 또는 '출사'가 포함되어 있으면 시간과 이름을 google 스프레드시트에 저장해야 합니다.
var API_TOKEN = '*************************************'; //チャットワークAPIトークン
function doPost(e) {
var json = JSON.parse(e.postData.contents);
/* リクエスト用パラメータ・URLの準備 */
var params = {
headers : {"X-ChatWorkToken" : API_TOKEN},
method : "post"
};
var roomId = json.webhook_event.room_id;
url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
var jsonBody = json.webhook_event.body;
var wsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1"); //シートを設定
var sheet_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var range = "user_list!A2:B100" ;
if(jsonBody.match(/出勤/) || jsonBody.match(/出社/)){
var accountId = json.webhook_event.account_id;
var messageId = json.webhook_event.message_id;
var body = ''
body += '[rp aid=' + accountId;
body += ' to=' + roomId + '-' + messageId + '] '
var date = new Date();
var time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss');
replyMessage = time + ' ' + ' アカウントID:' + accountId;
body += '[info]打刻時刻:' + replyMessage + '[/info]'
params.payload = {body :body};
UrlFetchApp.fetch(url, params);
var convert_name = "=VLOOKUP(" + accountId + ",IMPORTRANGE(" + "\"" + sheet_key + "\"" + "," + "\"" + range + "\"" + "),2,FALSE)" ;
wsData.appendRow([convert_name,time,"出勤"]);
}else if(jsonBody.match(/退勤/) || jsonBody.match(/退社/)){
上と同じような処理を入れる
}
}
위의 스크립트는 스프레드시트에 VLOOKUP 함수를 포함시켜 IMPORTRANGE에서 직원 마스터를 지정합니다.
sheet_key가 그것에 해당합니다. 여기는 URL을 넣는 것이 아니라,
htps : // / cs. 오, ぇ. 이 m/sp레아 d시에 ts/d/
뒤에 오는 문자열을 설정합니다. 낡은 넷 기사라면, URL 전체를 임베드하게 되어 있었으므로, 여기에서 약간 빠졌습니다.
가장 빠진 것은 IMPORTRANGE (이어지는 곳은 문자열을 직접 쓰고있었습니다 만, 더블 쿼테이션이 잘 처리되지 않고 스프레드 시트에 저장했을 때 반각의 곳이 전각의 더블 쿼 테이션이 되어 에러가 되고 있었습니다.대책으로서, 사전에 sheet_key,range를 변수로서 정의했습니다.
google apps script를 작성할 수 있으면 다음 두 가지 처리를 합니다.
Google Apps Script 웹 URL을 게시합니다.
ChatWork의 webhook에서 위의 URL을 설정합니다.
실행해보기
chatwork에 게시합니다. 예를 들어,
출사했습니다.
그리고 게시하면 chatwor는 자동으로
타각 시간:2020/07/16/09:33:16 계정 ID:XXXXX
라고 표시됩니다.
Google 스프레드시트에는 다음과 같이 표시됩니다.
미래
우선, 목적의 동작을 하는 것을 확인할 수 있었으므로, 향후는, 프로덕션 운용할 수 있도록(듯이) 커스터마이즈 해 갈 것입니다.
Reference
이 문제에 관하여(chatwork에서 출퇴근 정보를 google 스프레드 시트에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teijinakano/items/e7297faaf53bd39e567f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
직원 마스터를 다음과 같이 Google 스프레드시트로 만들 수 있습니다. 이것은 chatwork 계정 ID와 이름의 목록입니다. 시트 이름은 user_list입니다. 왜 직원 마스터가 필요하다고 말하면 chatwork에서 얻을 수있는 것은 계정 ID라는 숫자 정보이므로 그것을 스프레드 시트에 내뿜어도 무슨 엉망이되기 때문에 스프레드 시트에는 VLOOKUP 함수로 이름 가 표시되도록 직원 마스터를 만들어 둡니다.
chatwork에서 API 토큰을 가져옵니다.
테스트 스크립트 만들기
새롭게 근태 정보를 저장하는 Google 스프레드시트를 만듭니다. 그런 다음 도구 -> 스크립트 편집기를 선택하여 스크립트를 작성합니다.
chatwork에서 게시한 문자열에 '출근' 또는 '출사'가 포함되어 있으면 시간과 이름을 google 스프레드시트에 저장해야 합니다.
var API_TOKEN = '*************************************'; //チャットワークAPIトークン
function doPost(e) {
var json = JSON.parse(e.postData.contents);
/* リクエスト用パラメータ・URLの準備 */
var params = {
headers : {"X-ChatWorkToken" : API_TOKEN},
method : "post"
};
var roomId = json.webhook_event.room_id;
url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
var jsonBody = json.webhook_event.body;
var wsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1"); //シートを設定
var sheet_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var range = "user_list!A2:B100" ;
if(jsonBody.match(/出勤/) || jsonBody.match(/出社/)){
var accountId = json.webhook_event.account_id;
var messageId = json.webhook_event.message_id;
var body = ''
body += '[rp aid=' + accountId;
body += ' to=' + roomId + '-' + messageId + '] '
var date = new Date();
var time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss');
replyMessage = time + ' ' + ' アカウントID:' + accountId;
body += '[info]打刻時刻:' + replyMessage + '[/info]'
params.payload = {body :body};
UrlFetchApp.fetch(url, params);
var convert_name = "=VLOOKUP(" + accountId + ",IMPORTRANGE(" + "\"" + sheet_key + "\"" + "," + "\"" + range + "\"" + "),2,FALSE)" ;
wsData.appendRow([convert_name,time,"出勤"]);
}else if(jsonBody.match(/退勤/) || jsonBody.match(/退社/)){
上と同じような処理を入れる
}
}
위의 스크립트는 스프레드시트에 VLOOKUP 함수를 포함시켜 IMPORTRANGE에서 직원 마스터를 지정합니다.
sheet_key가 그것에 해당합니다. 여기는 URL을 넣는 것이 아니라,
htps : // / cs. 오, ぇ. 이 m/sp레아 d시에 ts/d/
뒤에 오는 문자열을 설정합니다. 낡은 넷 기사라면, URL 전체를 임베드하게 되어 있었으므로, 여기에서 약간 빠졌습니다.
가장 빠진 것은 IMPORTRANGE (이어지는 곳은 문자열을 직접 쓰고있었습니다 만, 더블 쿼테이션이 잘 처리되지 않고 스프레드 시트에 저장했을 때 반각의 곳이 전각의 더블 쿼 테이션이 되어 에러가 되고 있었습니다.대책으로서, 사전에 sheet_key,range를 변수로서 정의했습니다.
google apps script를 작성할 수 있으면 다음 두 가지 처리를 합니다.
Google Apps Script 웹 URL을 게시합니다.
ChatWork의 webhook에서 위의 URL을 설정합니다.
실행해보기
chatwork에 게시합니다. 예를 들어,
출사했습니다.
그리고 게시하면 chatwor는 자동으로
타각 시간:2020/07/16/09:33:16 계정 ID:XXXXX
라고 표시됩니다.
Google 스프레드시트에는 다음과 같이 표시됩니다.
미래
우선, 목적의 동작을 하는 것을 확인할 수 있었으므로, 향후는, 프로덕션 운용할 수 있도록(듯이) 커스터마이즈 해 갈 것입니다.
Reference
이 문제에 관하여(chatwork에서 출퇴근 정보를 google 스프레드 시트에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teijinakano/items/e7297faaf53bd39e567f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
var API_TOKEN = '*************************************'; //チャットワークAPIトークン
function doPost(e) {
var json = JSON.parse(e.postData.contents);
/* リクエスト用パラメータ・URLの準備 */
var params = {
headers : {"X-ChatWorkToken" : API_TOKEN},
method : "post"
};
var roomId = json.webhook_event.room_id;
url = "https://api.chatwork.com/v2/rooms/" + roomId + "/messages";
var jsonBody = json.webhook_event.body;
var wsData = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("sheet1"); //シートを設定
var sheet_key = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
var range = "user_list!A2:B100" ;
if(jsonBody.match(/出勤/) || jsonBody.match(/出社/)){
var accountId = json.webhook_event.account_id;
var messageId = json.webhook_event.message_id;
var body = ''
body += '[rp aid=' + accountId;
body += ' to=' + roomId + '-' + messageId + '] '
var date = new Date();
var time = Utilities.formatDate(date, 'Asia/Tokyo', 'yyyy/MM/dd/HH:mm:ss');
replyMessage = time + ' ' + ' アカウントID:' + accountId;
body += '[info]打刻時刻:' + replyMessage + '[/info]'
params.payload = {body :body};
UrlFetchApp.fetch(url, params);
var convert_name = "=VLOOKUP(" + accountId + ",IMPORTRANGE(" + "\"" + sheet_key + "\"" + "," + "\"" + range + "\"" + "),2,FALSE)" ;
wsData.appendRow([convert_name,time,"出勤"]);
}else if(jsonBody.match(/退勤/) || jsonBody.match(/退社/)){
上と同じような処理を入れる
}
}
chatwork에 게시합니다. 예를 들어,
출사했습니다.
그리고 게시하면 chatwor는 자동으로
타각 시간:2020/07/16/09:33:16 계정 ID:XXXXX
라고 표시됩니다.
Google 스프레드시트에는 다음과 같이 표시됩니다.
미래
우선, 목적의 동작을 하는 것을 확인할 수 있었으므로, 향후는, 프로덕션 운용할 수 있도록(듯이) 커스터마이즈 해 갈 것입니다.
Reference
이 문제에 관하여(chatwork에서 출퇴근 정보를 google 스프레드 시트에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/teijinakano/items/e7297faaf53bd39e567f
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(chatwork에서 출퇴근 정보를 google 스프레드 시트에 저장), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/teijinakano/items/e7297faaf53bd39e567f텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)