#4433: Menggunakan Steam Web API di Google Sheets

Setelah mengutak-ngatik bagaimana membuat fungsi linear dan bilinear pada google sheets, saya mulai tertarik dengan penggunaan google sheets dan API. Pribadi, saya masih kurang paham dengan API terlebih lagi dengan JSON. Hehe. Untuk sementara saya lewat saja ilmu dasar mengenai istilah tersebut karena waktunya yang terbatas (lebih milih kursus di Coursera) :D Karena mempelajari fundamental tanpa praktek rasanya bisa dibilang kurang bermanfaat. Fokus ke penyelesaian masalah dan memberikan solusi yang terbaik dan tercapai.

Saya mengartikan API sebagai suatu informasi atau cara memperoleh informasi dari penyedia layanan. Misalkan, Steam Web API, saya memahaminya sebagai salah satu portal informasi yang disediakan secara terbuka/tertutup agar kita bisa menggunakan informasi atau protokol tertentu untuk kepentingan pengembangan program yang kita butuhkan. Jika keliru definisinya, yah maklumi saja yah, saya belum baca secara seksama apa itu API sebenarnya. Selain istilah API, ada juga istilah JSON. Dan saya lebih tidak mengerti sama sekali untuk JSON ini. Yang saya tahu adalah karakter JS menggambarkan Javascript. Sebenarnya saya sempat menyinggung istilah ini dari dulu saat saya mengutak-atik bikin Bot untuk Steam menggunakan node.js (duh ini apalagi). Dari paragraf ini, Anda bisa melihat sebetapa butanya saya mengenal alat yang saya gunakan. Jadi, kalau ada yang keliru atau perintah yang gak penting, itu karena saya tiru di tempat lain.


Latar belakang dalam pos ini adalah dalam mendata orang di dalam Steam biasanya ada kerepotan sendiri. Bisa dimulai dari Manakah yang harus saya simpan? Nama atau Link atau IDnya? Jika simpan link profil bisa saja bingung siapa dia karena nama bisa saja berubah. Karena url link juga bisa diubah, yang agak pasti adalah IDnya. Tapi menyimpan ID saja ibarat menyimpan nomor telepon orang tapi gak ditulis siapa nama pemilik nomor tersebut. Informasi tersebut biasanya penting bagi para yang berusaha (jualan) di Steam, atau untuk administrasi suatu keanggotaan yang menggunakan Steam.

Beberapa tahun yang lalu saya sempat melakukan administrasi komunitas, sayangnya karena manual, harus cek linknya, namanya lah, pokoknya memusingkan dan menghabiskan waktu. Karena saya tidak ingin melihat orang lain akan bernasib sama saat melakukan pendataan menggunakan Steam, saya sempat utak-atik penggunaan Steam Web API. Semoga saja bermanfaat.

Jadi dari latar belakang diatas, bisa disimpulkan bahwa kita memerlukan 3 jenis identitas untuk mengurangi kekeliruan terjadi saat melakukan pendataan. 3 jenis identitas berupa UID (User ID, berbentuk 17 digit angka), Persona Name (Nama profil), Link (Untuk memudahkan navigasi saat melakukan pemeriksaan lebih lanjut). Dari 3 jenis identitas tersebut hanya 1 yang akan bersifat tetap yaitu UID. Berbeda dengan 2 jenis lainnya yang bisa bermacam-macam tergantung pemilik ID tersebut. Jadi saat melakukan penyimpanan data, lebih baik meminta informasi UID. Tenang kok, UID ini terbuka dan bisa diperoleh berdasarkan Link tapi biar memudahkan kita kan lebih enak langsung minta UIDnya.

Sebenarnya, saya ingin memberikan gambaran yang saya tahu mengenai proses permintaan informasi melalui steam web api, hanya saja, saya juga tidak begitu paham. Jadi, saya berikan fungsi kodenya saja. Ada 3 fungsi yang saya buat yaitu getSteamName(), getSteamLink(), getSteamStatus().

– getSteamName(UID) = memperoleh nama profil / personaname
– getSteamLink(UID) = memperoleh link pengguna
– getSteamStatus(UID) = memperoleh status pengguna (online/offline)

Untuk menggunakan fungsi-fungsi tersebut, buka Google Sheets, lalu membuka script editor. Karena scriptnya bersifat per dokumen, kamu mesti copy-paste ke script editor setiap kamu menggunakan dokumen baru. Sebelum memulai juga, sebaiknya kamu memperoleh api key dari steam. Saya masih belum tahu untuk memperoleh informasi publik tersebut tanpa membutuhkan api key. Anggap saja kita sudah memiliki api key. Salin kode dibawah kedalam Google Script dokumen terkait:

function getSteamName(UID) {
  var myUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=keykamu&steamids=" + escape(UID) +"&format=json";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var jsonObject = JSON.parse(jsonString).response;
  var result = jsonObject.players[0].personaname;
  return result;
}

function getSteamStatus(UID) {
  var myUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=keykamu&steamids=" + escape(UID) +"&format=json";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var jsonObject = JSON.parse(jsonString).response;
  var result = jsonObject.players[0].personastate;
  return result;
}

function getSteamLink(UID) {
  var myUrl = "http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/?key=keykamu&steamids=" + escape(UID) +"&format=json";
  var jsonData = UrlFetchApp.fetch(myUrl);
  var jsonString = jsonData.getContentText();
  var jsonObject = JSON.parse(jsonString).response;
  var result = jsonObject.players[0].profileurl;
  return result;
}

Pastikan untuk mengubah keykamu dengan api key yang kamu peroleh. Sekitar 2-3 jam saya utak-atik kodenya, padahal akhir-akhirnya sederhana. Saya keliru saat melakukan perintah parsing, saya mengira bahwa players tergolong sebagai objek, eh ternyata tergolong array. Haha. Jadi muter-muter juga untuk manggil objek yang sesuai.


Sudah deh, saya agak bingung juga sih jelasinnya gimana. Tapi bagi yang memiliki kemampuan menganalisa secara detail, kamu bisa memahami perintah-perintah yang digunakan dan fungsinya untuk apa. Saya masih perlu banyak pelajari mengenai topik ini juga. Daripada saya bicara banyak, tapi sama-sama tersesat. haha. Saya rasa juga gak perlu pakai contoh juga. Bagi yang kebingungan bisa tanya saya melalui twitter saya @tarumainfo, atau ke me@taruma.info

#4433: Menggunakan Steam Web API di Google Sheets