인사가 채팅 봇을 에이어로 제작해 보았습니다.

무엇을 만들려고 했는가?



엔지니어 채용을 하는데 있어서, Google Spreadsheet에서 엔트리가 올 때마다 행을 추가→엔지니어가 있는 ChatWork창에 연락, 이라고 하는 공정이 필요했습니다만 각각 같은 정보를 기재하는 것이 두 번 번거롭다고 생각해 하고 있었으므로, 스푸시에 기재하는 것으로 Bot가 말해 주는 것을 만들려고 했습니다.


↑이런 스푸시의 정보를...

↑ 일부러 채팅으로 흘리는 것이 귀찮았던 더 좋은 방법 있을 것이라고 생각하고 있었습니다.

비 엔지니어이므로 코드를 작성할 수 없습니다.



그래서 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 를 강림해 주셔 확인했습니다.
감사합니다 ...!

완성 된 것이 여기




스푸시 정보를 읽고 ...
↓
↓
↓

제대로 말해 주었습니다! 했어!

정말로 하고 싶은 것의 최저한은 어떻게든 생겼다는 것입니다.
작업 시간은 대체로 6시간 정도입니까?
(엔지니어의 도움이 없었다면 진흙 늪이었을 것입니다 ....)

코피페로 에이야와 제작할 수 있어, 움직였을 때 매우 기뻤기 때문에 Bot에 빠질 것 같은 예감입니다.
앞으로는 To기능의 추가나 엔지니어 전형 이외의 장면에서도 Bot으로 알려 드릴 수 있도록 커스텀 해 나갈 생각입니다.

좋은 웹페이지 즐겨찾기