見出し画像

【GAS入門②】Firebase app distributionからのiOSデバイス登録メール、いっそのことGASで自動化しちゃおうよ😎

アプリ開発をしている皆さん、
リリースに関して面倒なことはありませんか?

そう、iOSのデバイス登録です。

Firebase app distributionでアプリを配信したあと、
iOSユーザーがアプリを利用できるようにするために
開発者は追加の作業をしないといけません。

具体的には以下の通り

① iOSデバイスのUDIDをApple Developerで登録
②アプリのプロビジョニングプロファイルにデバイスを追加
③プロビジョニングプロファイルをXcodeで更新してアプリを再ビルド ④Firebase app distributionからアプリを配布

アプリをリリースするだけなのに、
iOSの場合は余計な作業に追われてしまいます…

開発者は辛いよ…


そして何より、一番の問題は、
Gmailを開かないといけないことです。

いつもSlackを通してコミュニケーションをしているのに、
iOSのデバイス登録メールだけはGmailで確認しないといけない…

これが想像以上に辛いんですよね。

具体的なGmailのデメリットとして挙げられるのは以下の通り

①Gmailが届いても通知に気付けない
②ブラウザからGmailにアクセス → ログインするのに毎回手間がかかる
③対応が遅れて結果的にユーザーを待たせてしまう

つまり、
開発者にとってもユーザーにとってもデメリットである
という状況を生んでしまっているわけです。


画期的な解決策

そこで、登場するのが今回の主人公、GASなんです。

GASの使い方について、
環境構築からSlackに通知するまでのシンプルな方法を
以下のnoteで紹介しているので、ぜひ参考にしてください。

それでは、Gmailに届いた特定の件名のメールを取得して、Slackに自動で通知する方法を見ていきましょう!

function getGmail() {
  const query = 'in:inbox subject:(新しいデバイスが登録されました)';
  const gmailThread = GmailApp.search(query, 0,10);
  const gmailMessage =  GmailApp.getMessagesForThreads(gmailThread);

  for(const message of gmailMessage) {
    for(const mail of message) {
      const body = mail.getPlainBody();
      sendMessageToSlack(`${body}\nApple developerリンク: https://developer.apple.com/account/resources/devices/add`);
    }
  }
}

function sendMessageToSlack(text) {
  var slackUrl = 'Incoming Webhookで取得したURL';
  var username = '通知bot';
  var icon_emoji = ':ghost:';

  var payload = {
    'username': username,
    'text': text,
    'icon_emoji':icon_emoji
  };

  var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(payload)
  };

  UrlFetchApp.fetch(slackUrl, options);
  console.log('Slackに通知を送信しました!');
}

これで、
Firebase app distributionからiOSのデバイス登録メールがGmailに届くと、
GASが起動してSlackに自動で通知してくれるための仕組みが完成しました。

Slackにきちんと通知が届いていますね🎉

また、Slackに通知を送る際に、
Apple developerのDevicesページのリンクも同時に添付しています。

そのため、
リンクをクリックするだけでデバイス登録ページに移動できます。

ブラウザからApple developerを検索して、Apple IDとパスワードを入力してログインして、Devicesページを探して…
という一連の手間を全て自動化することもできましたね!


最後に

いかがでしたでしょうか?
Firebase app distributionからのiOSデバイス登録メールをGmailで確認するという行為は地味に面倒になりがちです。

そこで、
この問題を解決するためにGASを用いて一連の流れを自動化しました。

今回はGmailの内容を取得してSlackに通知するという
仕組みを構築しましたが、1つだけ改善したいところがあります。

それは、

Gmailの本文の文章が長いときに、必要なところだけを抽出して
Slackに送信したい

ということです。

Gmailの内容を全文取得してSlackに送信していたら、
文章が長くなってしまいますからね。

ということで、次回のGAS入門③では、
特定の範囲の文字列を抽出する方法について解説します。

とても簡単に実装ができるので、
ぜひ参考にしていただければ幸いです👍

次回のGAS入門

それではまた!

この記事が気に入ったらサポートをしてみませんか?