Request Konten Gmail dengan Google API dan Pemrograman Ruby

Irwan Syarifudin
4 min readApr 28, 2021

--

Kebutuhan untuk bisa mendapatkan informasi seputar isi gmail pribadi ataupun user jadi lebih mudah dengan adanyanya API service dari google yaitu gmail API. Gmail API memberikan akses untuk melihat dan mengatur mailbox seperti thread, messages, dan labels pada email kamu.

https://www.google.com/gmail/about/static/images/logo-gmail.png

Berikut step-step yang dapat dilakukan untuk membuat request gmail API menggunakan bahasa pemrograman Ruby.

Install Ruby

Pastikan kamu telah melakukan instal pemrograman Ruby 2.0 atau lebih dari versi 2.0 sesuai sistem operasi. Berikut link untuk download Ruby.

Install Google client

Library ini diperlukan untuk menikmati layanan dari GMAIL API.

$ gem install google-api-client

Buat Direktori Baru

Siapkan direktori atau folder baru kemudian buat file dengan extension ruby didalam folder tersebut. Contoh test_gmail.rb.

  • Buat project baru melalui menu APIs & Services pada google cloud. Untuk mengetahui cara membuat project based on API & Services bisa lihat melalui link berikut: Aktivasi Service API

Buat Credentials API Service

Buat otorisasi credentials untuk jenis Desktop Application. Otorisasi yang akan kamu dapat berupa OAuth 2.0 Client IDs. Kamu bisa masuk ke halaman detail project API service terlebih dahulu sebelum membuat. Selengkapnya, langkah-langkah untuk membuat credential tersebut dapat dilihat melalui link berikut buat credential api service.

Make sure kembali kamu telah enable GMAIL API. Akses link berikut untuk melihat status service: status service gmail api.

Setelah membuat credential kamu akan mendapatkan sebuah OAuth client yang digunakan sebagai authorization dalam code program.

Selanjutnya, download file credential OAuth client dalam bentuk json tersebut, jangan lupa rename file credential menjadi credentials.json dan tempatkan satu folder dengan file program.

Buat Code untuk Authorization

Buat program untuk melakukan otorisasi pertama kali pada akun yang digunakan. Masukan email atau user id yang telah kamu aktifkan untuk membuat project API Service Gmail ini dalam variable user_id.

require "google/apis/gmail_v1"
require "googleauth"
require "googleauth/stores/file_token_store"
require "fileutils"
OOB_URI = "urn:ietf:wg:oauth:2.0:oob".freeze
APPLICATION_NAME = "Email Automation".freeze
CREDENTIALS_PATH = "credentials.json".freeze
TOKEN_PATH = "token.yaml".freeze
SCOPE = Google::Apis::GmailV1::AUTH_GMAIL_READONLY
def authorize
client_id = Google::Auth::ClientId.from_file CREDENTIALS_PATH
token_store = Google::Auth::Stores::FileTokenStore.new file:
TOKEN_PATH
authorizer = Google::Auth::UserAuthorizer.new client_id, SCOPE,
token_store
# masukan email atau user id kamu dalam variable user_id
user_id = "xxxx@gmail.com"
credentials = authorizer.get_credentials user_id
if credentials.nil?
url = authorizer.get_authorization_url base_url: OOB_URI
puts "Open the following URL in the browser and enter the " \
"resulting code after authorization:\n" + url
code = gets
credentials = authorizer.get_and_store_credentials_from_code(
user_id: user_id, code: code, base_url: OOB_URI
)
end
credentials
end

Ketika code tersebut dijalankan, kamu akan mendapatkan url pada console output untuk akses otoriasi email. Copy dan Akses url tersebut menggunakan browser.

Google perlu memastikan bahwa email yang digunakan dalam credentials.json yang sebelumnya telah dibuat itu adalah email kamu dan telah mendapat akses. Setelah itu google akan men-generate token_store dalam folder utama program kamu.

Tambahkan code untuk membuat service baru

Google memiliki banyak service, untuk melihat service-service apa saja yang telah diprovide google kamu bisa lihat melalui link berikut google service. Untuk menikmati layanan service dari gmail kamu perlu inisialisasi modul Google::Apis::GmailV1 dan panggil class GmailService seperti berikut:

# Initialize the API Service
service = Google::Apis::GmailV1::GmailService.new
service.client_options.application_name = APPLICATION_NAME
service.authorization = authorize

Studi Case:

- Code untuk request mendapatkan informasi Labels dalam Email

Tambahkan code berikut:

# Show the user's labels
# masukan kembali masukan email atau user id kamu dalam variable user_id
user_id = "xxxx@gmail.com"
result = service.list_user_labels user_id
puts "Labels:"
puts "No labels found" if result.labels.empty?
result.labels.each { |label| puts "- #{label.name}" }

Output:

Daftar layanan-layanan yang kamu sedang gunakan dalam GMAIL akan terlihat seperti gambar di atas.

- Code untuk request mendapatkan informasi email body dari message terbaru

Tambahkan code berikut:

# Get list message dalam user
result_list = service.list_user_messages(user_id)
# Get message id terakhir yang baru masuk
result_list_id = result_list.messages[0].id
# Masuk ke payload message
user_message = service.get_user_message(user_id, result_list_id)
mail = user_message.payload
# Show the data
puts "Get for the latest message: "
puts mail.parts[0].body.data

Output:

Sekian tutorial kali ini semoga bermanfaat. Thank you!

Referensi:

--

--