環境
MacOS Mojave(10.14.3)
Ruby 2.5.1
rails 5.2.2
rails apiモードでフォルダ作成済み
手順
0.必要なGemをインストール
gem 'slack-api'
gem 'jwt'
gem 'httparty', '~> 0.13.7'
gem 'zlib', '~> 0.1.0'
$ bundle install
1.AppStoreConnectからアプリの情報を入手する
1-1.キー情報を発行し、PRIVATE KEYファイルをlibフォルダ下に配置
以下の記事の通りに、キー情報(Issuer ID、キーID、PRIVATE KEY)を取得します。
https://qiita.com/kurikazu/items/135a791ba09121d7a534
ダウンロードしたPRIVATE KEYファイル(ファイル名.p8)はlibフォルダに配置します。
1-2.トークンを発行し、変数に格納
Appleが提供しているAPIの叩き方です。
requireしているものは後で必要になるので、先に記述しておきます。
class ApplicationController < ActionController::API
require 'httparty'
# API用
require 'base64'
require 'jwt'
# gzip解凍用
require 'zlib'
require 'stringio'
$now = DateTime.now
  def iOS
      issure_id = '[Issuer ID]欄に表示された文字列'
      key_id = '[キーID]欄に表示された文字列'
      private_key = OpenSSL::PKey.read(File.read(Rails.root.to_s + "/lib/ダウンロードしたPRIVATE KEYファイル名"))
      $token = JWT.encode(
        {
          iss: issure_id,
          exp: Time.now.to_i + 20 * 60,  # トークンの有効期限は20分以内とAppleが規定している
          aud: 'appstoreconnect-v1'      # audは appstoreconnect-v1 固定
        },
        private_key,
        'ES256', # 署名方式は ES256 固定
        header_fields = {
          kid: key_id
        }
      )
  end
end
1-3.Httpartyを使ってAPIを叩く
class ApplicationController < ActionController::API
  〜省略〜
  response = HTTParty.get 'https://api.appstoreconnect.apple.com/v1/salesReports', headers:{"Accept" => "application/a-gzip", :Authorization => "Bearer #{$token}"}, :query => {"filter[frequency]": "DAILY", "filter[reportDate]": $now.strftime('%Y-%m-%d'), "filter[reportSubType]" => "SUMMARY", "filter[reportType]" => "SALES", "filter[vendorNumber]" => "ベンダー番号"}
Queryパラメータの詳細はこちら
https://developer.apple.com/documentation/appstoreconnectapi/download_sales_and_trends_reports
1-4.gzファイルを解凍し、変数に格納
class ApplicationController < ActionController::API
  〜省略〜
   gz = Zlib::GzipReader.new(StringIO.new(response.body.to_s))
   data = gz.read
  end
end
これで、"data"にファイルが格納されました。
2.Slackのトークンを作成する
2-1.以下のサイトで、トークンを作成
https://api.slack.com/custom-integrations/legacy-tokens
"create token"を押すと、tokenカラムにそのルームのtokenが表示されます。

2-2.config/initializersフォルダにファイルを作成
require "slack"
Slack.configure do |config|
  config.token = "取得したトークン"
end
2-3.Slack APIを使ってテキストを送信
class ApplicationController < ActionController::API
  〜省略〜
  Slack.chat_postMessage(text: data, username: '任意のユーザーネーム', channel: '#チャンネル名')
end
テキストメッセージ欄に先ほどの変数"data"を入れ、完成です。
全体像
class ApplicationController < ActionController::API
require 'httparty'
# API用
require 'base64'
require 'jwt'
# gzip解凍用
require 'zlib'
require 'stringio'
$now = DateTime.now
  def iOS
      issure_id = '[Issuer ID]欄に表示された文字列'
      key_id = '[キーID]欄に表示された文字列'
      private_key = OpenSSL::PKey.read(File.read(Rails.root.to_s + "/lib/ダウンロードしたPRIVATE KEYファイル名"))
      $token = JWT.encode(
        {
          iss: issure_id,
          exp: Time.now.to_i + 20 * 60,  # トークンの有効期限は20分以内とAppleが規定している
          aud: 'appstoreconnect-v1'      # audは appstoreconnect-v1 固定
        },
        private_key,
        'ES256', # 署名方式は ES256 固定
        header_fields = {
          kid: key_id
        }
      )
   response = HTTParty.get 'https://api.appstoreconnect.apple.com/v1/salesReports', headers:{"Accept" => "application/a-gzip", :Authorization => "Bearer #{$token}"}, :query => {"filter[frequency]": "DAILY", "filter[reportDate]": $now.strftime('%Y-%m-%d'), "filter[reportSubType]" => "SUMMARY", "filter[reportType]" => "SALES", "filter[vendorNumber]" => "ベンダー番号"}
   gz = Zlib::GzipReader.new(StringIO.new(response.body.to_s))
   data = gz.read
   Slack.chat_postMessage(text: data, username: '任意のユーザーネーム', channel: '#チャンネル名')
  end
end
※ベンダーIDはiTunes connectの"売上とトレンド"で確認できます!
参考
Generating JWT Tokens for App Store Connect API
AppStoreConnect API 公式サイト/Download Sales and Trends Reports
App Store Connect APIを利用してアプリ情報を取得する
Slack APIのTokenの取得・場所
[Rails slack連携をしてみた]
(https://qiita.com/shizuma/items/19879ec0b5cc11ce1f79)
How to decompress Gzip string in ruby?