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

무엇을 만들려고 했는가?



엔지니어 채용을 하는데 있어서, 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으로 알려 드릴 수 있도록 커스텀 해 나갈 생각입니다.

좋은 웹페이지 즐겨찾기