인사가 채팅 봇을 에이어로 제작해 보았습니다.
무엇을 만들려고 했는가?
엔지니어 채용을 하는데 있어서, Google Spreadsheet에서 엔트리가 올 때마다 행을 추가→엔지니어가 있는 ChatWork창에 연락, 이라고 하는 공정이 필요했습니다만 각각 같은 정보를 기재하는 것이 두 번 번거롭다고 생각해 하고 있었으므로, 스푸시에 기재하는 것으로 Bot가 말해 주는 것을 만들려고 했습니다.
![](https://s1.md5.ltd/image/26725c2d4341b6a1e020d7688cd2dc93.png)
↑이런 스푸시의 정보를...
![](https://s1.md5.ltd/image/9a74374e1c7d017a851629ce03d61a3b.png)
↑ 일부러 채팅으로 흘리는 것이 귀찮았던 더 좋은 방법 있을 것이라고 생각하고 있었습니다.
비 엔지니어이므로 코드를 작성할 수 없습니다.
그래서 Qiita를 풀 활용해 아래와 같이 매우 고마운 기사를 참고로 GAS에 도전하기로 했습니다.
Google Apps Script에서 ChatWork API를 사용하여 게시
Google Spreadsheet에 새 행이 추가되면 Chatwork에 알립니다.
대단하네요. 조사하면 코피페에서 엔지니어 기분이 될 수 있습니다!
이것으로 나도 Bot 쓰고 있어! 라는 기분이었습니다.
API 토큰 발행, 라이브러리 추가, 테스트 채팅용 코드 알아보자! 말해줘! 라는 때였습니다.
chatwork api invalid ip 오류가 굉장히 나온다.
자세한 내용은 다음과 같습니다.
{"errors":["Invalid IP"]} (전체 응답을 보려면 muteHttpExceptions 옵션을 사용하십시오)
나 야 네
비엔지니어의 나로부터 하면 「IP로 화가 났어」정도였기 때문에 API 토큰 재발행하거나 라이브러리 재설정 했습니다만 이터널 포에버 해소하지 않습니다.
본래라면 자신만의 힘으로 어떻게든 하고 싶었는데 조사해 잘 안 되었기 때문에 당사 엔지니어
감사합니다.
원인은 확실히 IP 제한이었습니다 .... (초보자는 무리한 에러라는 것이었습니다.)
인프라 팀에 해소 받고 무사히 테스트 채팅을 해 주었습니다!
나머지는 에이어로 만
여기까지 오면 상기의 고맙은 기사보다, 이하와 같이 재작성해 움직일 뿐이었습니다!
newInquireNotice.js
function main() {
sendChatworkTest();
}
/*
新規問い合わせ通知
*/
function newInquireNotice() {
// シート情報を取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
// 複数シートがある場合、お目当てのシートの話じゃないならやめる
var sheetName = sheet.getSheetName();
Logger.log(sheetName)
if (sheetName !== "エンジニア") { //エンジニア ←ここは使ってるシート名を入れてあげてください
return;
}
// ラベル列を検索して返す関数
function colSearch(label) {
for (i = 1; i <= sheet.getLastColumn(); i++) {
if (sheet.getRange(3, i).getValue() == label) {
return i;
}
}
}
// company, name, noticedの列数
var nameCol = colSearch("name");
var ageCol = colSearch("age");
var noticedCol = colSearch("noticed");
// 最新行のnoticedがtrue入ってなければ通知出してtrueにする関数
function newNotice() {
lastRow = sheet.getLastRow();
var thisNoticed = sheet.getRange(lastRow, noticedCol);
if (thisNoticed.getValue() !== true) {
var newName = sheet.getRange(lastRow, nameCol).getValue();
var newAge = sheet.getRange(lastRow, ageCol).getValue();
// 会社名は無いこともあるので、適当にうまいことやる
if (newAge) {
newAge = "(" + newAge + ")";
}
var message =
"[info][title]新規エントリー[/title]"
+ newName + "様"+ newAge +"からエントリーがありました\n\n"
+ "ご確認よろしくおねがいします!\n\n"
+ spreadsheet.getUrl() + "#gid=" + sheet.getSheetId() + "[/info]";
// 通知済のところをtrueにする
sheet.getRange(lastRow, noticedCol).setValue(true);
// テスト用
sendChatworkTest(message);
}
}
newNotice();
}
시트의 지정이나 통지 끝난 설정 등 세세한 곳에서 자주 에러로 화가 났으므로 최종적으로는 당사 PM 를 강림해 주셔 확인했습니다.
감사합니다 ...!
완성 된 것이 여기
![](https://s1.md5.ltd/image/be1233e0149e8314140cffd234e5fea3.png)
스푸시 정보를 읽고 ...
↓
↓
↓
![](https://s1.md5.ltd/image/46e6185a61d1f3df3235d6209af003ea.png)
제대로 말해 주었습니다! 했어!
정말로 하고 싶은 것의 최저한은 어떻게든 생겼다는 것입니다.
작업 시간은 대체로 6시간 정도입니까?
(엔지니어의 도움이 없었다면 진흙 늪이었을 것입니다 ....)
코피페로 에이야와 제작할 수 있어, 움직였을 때 매우 기뻤기 때문에 Bot에 빠질 것 같은 예감입니다.
앞으로는 To기능의 추가나 엔지니어 전형 이외의 장면에서도 Bot으로 알려 드릴 수 있도록 커스텀 해 나갈 생각입니다.
Reference
이 문제에 관하여(인사가 채팅 봇을 에이어로 제작해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/manatea/items/3b0f1726e9224fb52cd4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
그래서 Qiita를 풀 활용해 아래와 같이 매우 고마운 기사를 참고로 GAS에 도전하기로 했습니다.
Google Apps Script에서 ChatWork API를 사용하여 게시
Google Spreadsheet에 새 행이 추가되면 Chatwork에 알립니다.
대단하네요. 조사하면 코피페에서 엔지니어 기분이 될 수 있습니다!
이것으로 나도 Bot 쓰고 있어! 라는 기분이었습니다.
API 토큰 발행, 라이브러리 추가, 테스트 채팅용 코드 알아보자! 말해줘! 라는 때였습니다.
chatwork api invalid ip 오류가 굉장히 나온다.
자세한 내용은 다음과 같습니다.
{"errors":["Invalid IP"]} (전체 응답을 보려면 muteHttpExceptions 옵션을 사용하십시오)
나 야 네
비엔지니어의 나로부터 하면 「IP로 화가 났어」정도였기 때문에 API 토큰 재발행하거나 라이브러리 재설정 했습니다만 이터널 포에버 해소하지 않습니다.
본래라면 자신만의 힘으로 어떻게든 하고 싶었는데 조사해 잘 안 되었기 때문에 당사 엔지니어
감사합니다.
원인은 확실히 IP 제한이었습니다 .... (초보자는 무리한 에러라는 것이었습니다.)
인프라 팀에 해소 받고 무사히 테스트 채팅을 해 주었습니다!
나머지는 에이어로 만
여기까지 오면 상기의 고맙은 기사보다, 이하와 같이 재작성해 움직일 뿐이었습니다!
newInquireNotice.js
function main() {
sendChatworkTest();
}
/*
新規問い合わせ通知
*/
function newInquireNotice() {
// シート情報を取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
// 複数シートがある場合、お目当てのシートの話じゃないならやめる
var sheetName = sheet.getSheetName();
Logger.log(sheetName)
if (sheetName !== "エンジニア") { //エンジニア ←ここは使ってるシート名を入れてあげてください
return;
}
// ラベル列を検索して返す関数
function colSearch(label) {
for (i = 1; i <= sheet.getLastColumn(); i++) {
if (sheet.getRange(3, i).getValue() == label) {
return i;
}
}
}
// company, name, noticedの列数
var nameCol = colSearch("name");
var ageCol = colSearch("age");
var noticedCol = colSearch("noticed");
// 最新行のnoticedがtrue入ってなければ通知出してtrueにする関数
function newNotice() {
lastRow = sheet.getLastRow();
var thisNoticed = sheet.getRange(lastRow, noticedCol);
if (thisNoticed.getValue() !== true) {
var newName = sheet.getRange(lastRow, nameCol).getValue();
var newAge = sheet.getRange(lastRow, ageCol).getValue();
// 会社名は無いこともあるので、適当にうまいことやる
if (newAge) {
newAge = "(" + newAge + ")";
}
var message =
"[info][title]新規エントリー[/title]"
+ newName + "様"+ newAge +"からエントリーがありました\n\n"
+ "ご確認よろしくおねがいします!\n\n"
+ spreadsheet.getUrl() + "#gid=" + sheet.getSheetId() + "[/info]";
// 通知済のところをtrueにする
sheet.getRange(lastRow, noticedCol).setValue(true);
// テスト用
sendChatworkTest(message);
}
}
newNotice();
}
시트의 지정이나 통지 끝난 설정 등 세세한 곳에서 자주 에러로 화가 났으므로 최종적으로는 당사 PM 를 강림해 주셔 확인했습니다.
감사합니다 ...!
완성 된 것이 여기
![](https://s1.md5.ltd/image/be1233e0149e8314140cffd234e5fea3.png)
스푸시 정보를 읽고 ...
↓
↓
↓
![](https://s1.md5.ltd/image/46e6185a61d1f3df3235d6209af003ea.png)
제대로 말해 주었습니다! 했어!
정말로 하고 싶은 것의 최저한은 어떻게든 생겼다는 것입니다.
작업 시간은 대체로 6시간 정도입니까?
(엔지니어의 도움이 없었다면 진흙 늪이었을 것입니다 ....)
코피페로 에이야와 제작할 수 있어, 움직였을 때 매우 기뻤기 때문에 Bot에 빠질 것 같은 예감입니다.
앞으로는 To기능의 추가나 엔지니어 전형 이외의 장면에서도 Bot으로 알려 드릴 수 있도록 커스텀 해 나갈 생각입니다.
Reference
이 문제에 관하여(인사가 채팅 봇을 에이어로 제작해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/manatea/items/3b0f1726e9224fb52cd4
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
function main() {
sendChatworkTest();
}
/*
新規問い合わせ通知
*/
function newInquireNotice() {
// シート情報を取得
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var sheet = SpreadsheetApp.getActiveSheet();
// 複数シートがある場合、お目当てのシートの話じゃないならやめる
var sheetName = sheet.getSheetName();
Logger.log(sheetName)
if (sheetName !== "エンジニア") { //エンジニア ←ここは使ってるシート名を入れてあげてください
return;
}
// ラベル列を検索して返す関数
function colSearch(label) {
for (i = 1; i <= sheet.getLastColumn(); i++) {
if (sheet.getRange(3, i).getValue() == label) {
return i;
}
}
}
// company, name, noticedの列数
var nameCol = colSearch("name");
var ageCol = colSearch("age");
var noticedCol = colSearch("noticed");
// 最新行のnoticedがtrue入ってなければ通知出してtrueにする関数
function newNotice() {
lastRow = sheet.getLastRow();
var thisNoticed = sheet.getRange(lastRow, noticedCol);
if (thisNoticed.getValue() !== true) {
var newName = sheet.getRange(lastRow, nameCol).getValue();
var newAge = sheet.getRange(lastRow, ageCol).getValue();
// 会社名は無いこともあるので、適当にうまいことやる
if (newAge) {
newAge = "(" + newAge + ")";
}
var message =
"[info][title]新規エントリー[/title]"
+ newName + "様"+ newAge +"からエントリーがありました\n\n"
+ "ご確認よろしくおねがいします!\n\n"
+ spreadsheet.getUrl() + "#gid=" + sheet.getSheetId() + "[/info]";
// 通知済のところをtrueにする
sheet.getRange(lastRow, noticedCol).setValue(true);
// テスト用
sendChatworkTest(message);
}
}
newNotice();
}
![](https://s1.md5.ltd/image/be1233e0149e8314140cffd234e5fea3.png)
스푸시 정보를 읽고 ...
↓
↓
↓
![](https://s1.md5.ltd/image/46e6185a61d1f3df3235d6209af003ea.png)
제대로 말해 주었습니다! 했어!
정말로 하고 싶은 것의 최저한은 어떻게든 생겼다는 것입니다.
작업 시간은 대체로 6시간 정도입니까?
(엔지니어의 도움이 없었다면 진흙 늪이었을 것입니다 ....)
코피페로 에이야와 제작할 수 있어, 움직였을 때 매우 기뻤기 때문에 Bot에 빠질 것 같은 예감입니다.
앞으로는 To기능의 추가나 엔지니어 전형 이외의 장면에서도 Bot으로 알려 드릴 수 있도록 커스텀 해 나갈 생각입니다.
Reference
이 문제에 관하여(인사가 채팅 봇을 에이어로 제작해 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/manatea/items/3b0f1726e9224fb52cd4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)