App Store Connect 검토에 신속하게 대응하고 싶습니다.

소개



Studioz Advent Calendar 4일째 기사입니다!

최근 맛있었습니다 햄버거는 "후쿠요시 롯폰기점"의 녹는 햄버거입니다.
표면을 가볍게 구운 레어 상태에서 철판으로 좋아하는 구운 가감까지 가열 해 주시는 햄버거는
조금 와사비를 붙이면 양질의 지방의 단맛이 퍼지면서도 긴축되어 먹을 정도로 위가 활발하게 움직이는 본능에 호소하는 맛이었습니다.
가게 안은 세련된 분위기였지만, 낯설지 않고 맛있는 것을 생각하는 마음껏 먹을 수 있는 멋진 가게입니다
상냥한 점원은 천하 일품의 볶음밥 대성은 코스파가 좋고 최고로 맛있다고 가르쳐 주었습니다
여러분도 롯폰기에 오셨을 때는 꼭 가 보시고, 천하 일품에

그래서 이번에는 AppStoreConnect의 심사 통과를 감지하기 위해
메일을 자동으로 확인하고 통지를 날리려고 생각합니다!

알림은 GAS로 Chatwork로 날아갈 것입니다.



어디에 통지가 오면 알아 차리기 쉬운지는 각 사람이라고 생각합니다만
우리는 GSuite와 Chatwork를 사용하기 때문에
이번에는 GoogleAppsScript를 사용하여 Chatwork에 알림을 보겠습니다!

Gmail에 도착한 이메일을 자동으로 확인



GAS (Google AppsScript)에서하고 싶은 것은 이런 느낌입니다.
  • AppStoreConnect에서받은 이메일을 자동으로 확인합니다.
  • 심사에 관한 메일이 도착하면 내용으로부터 심사 진행을 판정한다
  • 심사 진행에 따라 ChatworkAPI에 메시지를 게시
  • 한 번 체크한 메일을 더 이상 체크하지 않도록 표식을 붙인다

  • ▼코드로 하면 대체로 이런 느낌▼
      var LABEL_NAME = "審査通過チェック済み"; // メールが確認済みである事を示すラベル名(なんでもいい)
      var APP_APPLE_ID = 111111111; // App Apple ID
    
      // AppAppleIDと"App Store Connect"を含むが、確認済みラベルがついていないメールを探す(1)
      var strTerms = 'label:(-' + LABEL_NAME + ')'
      + '(' + APP_APPLE_ID + ' AND '
      + '"App Store Connect")';
      var myThreads = GmailApp.search(strTerms, 0, 50);
      var myMsgs = GmailApp.getMessagesForThreads(myThreads);
      var messages = [];
      var body = "";
      var needTo = false;
    
      // 今回の用途では順番は重要じゃないし、スレッドの二次元配列のままでは使いにくいので配列にする
      for(var i = 0; i < myMsgs.length; i++){
        for(var j = 0; j < myMsgs[i].length; j++){
          messages.push(myMsgs[i][j]);
        }
      }
    
      // 審査進捗マスタ(後述)
      var master = SearchStateMaster();
    
      // 審査進捗に応じてChatworkへ渡す文言を作りつつ、通知が必要かどうか判定(2)
      for(var i = 0; i < messages.length; i++){
        var messageBody = messages[i].getBody();
        if(messageBody.indexOf(appId) >= 0 &&
           messages[i].getTo().indexOf(receiverAddress) >= 0){
          var subject = messages[i].getSubject();
          for(var j = 0; j < master.length; j++){
            if(subject.indexOf(master[j]["search_word"]) >= 0){
              body += "[info][title]";
              body += Utilities.formatDate(messages[i].getDate(), "JST", "YYYY'年'MM'月'dd'日 'HH:mm");
              body += "[/title]";
              body += master[j]["description"];
              body += "[/info]";
              if(master[j]["need_to"] == true){
                needTo = true;
              }
              break;
            }
          }
        }
      }
    
      // 本文があればChatworkにメッセージを送る(3)
      if(body != ""){
        sendMessage(body, needTo);
      }
    
      // myThreadsすべてにチェック済みのラベルを追加(4)
      for(var i=0;i < myThreads.length;i++){
        myThreads[i].addLabel(checkedLabel);
      }
    

    심사 진행 마스터는 무엇입니까?



    모처럼 GAS를 사용하고 있기 때문에,
    config 같은 값이나 마스터 같은 정보는 스프레드 시트로 관리하면 나중에 조정이 편합니다!
    ▼같은 시트로 진척의 판정에 사용하는 워드, Chatwork에의 메세지에 사용하는 문언, 통지(Chatwork에서의 TO의 필요 여부)를 관리하고 있습니다

    그건 그렇고, 위에서
  • 심사 제출 시
  • 심사 개시시
  • 심사 통과시 (수동 릴리스 설정)
  • 심사에 문제가 있어 메시지가 도착하고 있을 때

  • 설정입니다!

    그리고...




    했어! 통과했습니다
    이상입니다!

    결론



    메일의 자동 확인과 통지는 용도의 폭이 넓다!
    평소 비공개 메일을 많이 확인하지 않는 것 같아요.
    통지처를 LINE Notify로 해, 가라케 사용의 할머니로부터 받은 메일을 빨리 알아차리는 일도 가능합니다

    할머니 ...

    좋은 웹페이지 즐겨찾기