Fitur canggih dari skrip Google Ads adalah kemampuan untuk berintegrasi dengan data dan layanan dari API pihak ketiga.
Panduan ini membahas konsep berikut yang dapat membantu Anda menulis skrip untuk terhubung ke layanan lain:
- Membuat permintaan HTTP: Cara menggunakan
UrlFetchApp
untuk mengakses API eksternal. - Autentikasi: Kita membahas beberapa skenario autentikasi umum.
- Mengurai respons: Cara memproses data JSON dan XML yang ditampilkan.
Kami juga menyertakan contoh untuk sejumlah API populer yang mengilustrasikan konsep ini.
Mengambil data dengan UrlFetchApp
UrlFetchApp
menyediakan
fungsi inti yang diperlukan untuk berinteraksi dengan API pihak ketiga.
Contoh berikut menunjukkan pengambilan data cuaca dari OpenWeatherMap. Kami memilih OpenWeatherMap karena skema otorisasi dan API-nya yang relatif sederhana.
Buat permintaan
Dokumentasi OpenWeatherMap menentukan format untuk meminta cuaca saat ini sebagai berikut:
http://api.openweathermap.org/data/2.5/weather?q=[location]&apikey=[apikey]
URL ini memberikan contoh otorisasi pertama kita: Parameter apikey
wajib diisi, dan nilainya unik untuk setiap pengguna. Kunci ini diperoleh melalui
pendaftaran.
Setelah pendaftaran, permintaan yang menggunakan kunci dapat dikeluarkan sebagai berikut:
const location = 'London,uk';
const apikey = 'da.......................81'; // Replace with your API key
const currentWeatherUrl = `http://api.openweathermap.org/data/2.5/weather?q=${location}&apiKey=${apiKey}`;
const response = UrlFetchApp.fetch(currentWeatherUrl);
console.log(response.getContentText());
Menjalankan kode ini akan menghasilkan string panjang teks JSON yang ditulis ke jendela logging dalam skrip Google Ads.
Langkah berikutnya adalah mengonversinya ke format yang dapat digunakan dalam skrip Anda.
Data JSON
Banyak API yang memberikan respons dalam format JSON. Ini mewakili serialisasi sederhana objek JavaScript, sehingga objek, array, dan jenis dasar dapat direpresentasikan dan ditransfer sebagai string.
Untuk mengonversi string JSON—seperti yang ditampilkan dari
OpenWeatherMap—kembali menjadi objek JavaScript, gunakan metode
JSON.parse
bawaan. Melanjutkan dari contoh di atas:
const json = response.getContentText();
const weatherData = JSON.parse(json);
console.log(weatherData.name);
// "London"
Metode JSON.parse
mengonversi string menjadi objek, yang memiliki properti
name
.
Lihat bagian Mengurai respons untuk mengetahui detail selengkapnya tentang cara menggunakan respons API dalam berbagai format.
Penanganan error
Penanganan error adalah pertimbangan penting saat menggunakan API pihak ketiga dalam skrip Anda karena API pihak ketiga sering kali berubah dan menghasilkan nilai respons yang tidak terduga, misalnya:
- URL atau parameter untuk API dapat berubah tanpa sepengetahuan Anda.
- Masa berlaku kunci API (atau kredensial pengguna lainnya) dapat berakhir.
- Format respons dapat berubah tanpa pemberitahuan.
Kode status HTTP
Karena potensi respons yang tidak terduga, Anda harus memeriksa kode status HTTP. Secara default,
UrlFetchApp
akan menampilkan pengecualian jika kode error HTTP ditemukan. Untuk
mengubah perilaku ini, Anda harus meneruskan parameter opsional, seperti dalam
contoh berikut:
const options = {
muteHttpExceptions: true
}
const response = UrlFetchApp.fetch(url, options);
// Any status code greater or equal to 400 is either a client or server error.
if (response.getResponseCode() >= 400) {
// Error encountered, send an email alert to the developer
sendFailureEmail();
}
Struktur respons
Saat API pihak ketiga berubah, developer sering kali tidak langsung mengetahui
perubahan yang mungkin memengaruhi skrip mereka. Misalnya, jika properti name
yang ditampilkan dalam contoh OpenWeatherMap diubah menjadi locationName
, skrip
yang menggunakan properti ini akan gagal.
Oleh karena itu, sebaiknya uji apakah struktur yang ditampilkan sesuai dengan yang diharapkan, misalnya:
const weatherData = JSON.parse(json);
if (weatherData && weatherData.name) {
console.log('Location is : ' + name);
} else {
console.log('Data not in expected format');
}
Mengirim data POST dengan UrlFetchApp
Contoh pengantar dengan OpenWeatherMap
hanya mengambil data. Biasanya, panggilan API yang tidak mengubah status di server jarak jauh
menggunakan metode
HTTP
GET
.
Metode GET
adalah default untuk UrlFetchApp
. Namun, beberapa panggilan API,
seperti panggilan ke layanan yang mengirim pesan SMS, akan memerlukan metode lain,
seperti POST
atau PUT
.
Untuk mengilustrasikan penggunaan panggilan POST
dengan UrlFetchApp
, contoh berikut
menunjukkan integrasi dengan Slack, aplikasi pesan collaboratif, untuk mengirim pesan Slack kepada pengguna dan grup Slack.
Menyiapkan Slack
Panduan ini mengasumsikan bahwa Anda telah mendaftar ke akun Slack.
Seperti OpenWeatherMap dalam contoh sebelumnya, Anda harus mendapatkan token untuk mengaktifkan pengiriman pesan. Slack menyediakan URL unik yang memungkinkan Anda mengirim pesan ke tim, yang disebut Webhook Masuk.
Siapkan Webhook Masuk dengan mengklik Tambahkan Integrasi Webhook Masuk dan mengikuti petunjuknya. Proses ini harus menerbitkan URL yang akan digunakan untuk mengirim pesan.
Membuat permintaan POST
Setelah menyiapkan Webhook Masuk, membuat permintaan POST
hanya memerlukan
penggunaan beberapa properti tambahan dalam parameter options
yang diteruskan ke
UrlFetchApp.fetch
:
method
: Seperti yang disebutkan, nilai defaultnya adalahGET
, tetapi di sini kita menggantinya dan menyetelnya kePOST
.payload
: Ini adalah data yang akan dikirim ke server sebagai bagian dari permintaanPOST
. Dalam contoh ini, Slack mengharapkan objek yang diserialisasi ke format JSON seperti yang dijelaskan dalam dokumentasi Slack. Untuk ini, metodeJSON.stringify
digunakan, danContent-Type
ditetapkan keapplication/json
.// Change the URL for the one issued to you from 'Setting up Slack'. const SLACK_URL = 'https://hooks.slack.com/services/AAAA/BBBB/CCCCCCCCCC'; const slackMessage = { text: 'Hello, slack!' }; const options = { method: 'POST', contentType: 'application/json', payload: JSON.stringify(slackMessage) }; UrlFetchApp.fetch(SLACK_URL, options);
Contoh Slack yang diperluas
Contoh di atas menunjukkan minimum untuk mengaktifkan pesan masuk ke Slack. Contoh yang diperluas menggambarkan pembuatan dan pengiriman Laporan Performa Kampanye ke grup, serta beberapa opsi format dan tampilan.
Lihat pemformatan pesan dalam dokumentasi Slack untuk mengetahui detail selengkapnya tentang pesan Slack.
Data formulir
Contoh di atas menunjukkan penggunaan string JSON sebagai properti payload
untuk permintaan POST
.
Bergantung pada format payload
, UrlFetchApp
menggunakan pendekatan yang berbeda
untuk membuat permintaan POST
:
- Jika
payload
adalah string, argumen string akan dikirim sebagai isi permintaan. Jika
payload
adalah objek, misalnya peta nilai:{to: 'mail@example.com', subject:'Test', body:'Hello, World!'}
Pasangan kunci/nilai dikonversi menjadi data formulir:
subject=Test&to=mail@example.com&body=Hello,+World!
Selain itu, header
Content-Type
untuk permintaan ditetapkan keapplication/x-www-form-urlencoded
.
Beberapa API memerlukan penggunaan data formulir saat mengirimkan permintaan POST, sehingga konversi otomatis dari objek JavaScript ke data formulir ini penting untuk diingat.
Autentikasi dasar HTTP
Autentikasi dasar HTTP adalah salah satu bentuk autentikasi paling sederhana dan digunakan oleh banyak API.
Autentikasi dicapai dengan melampirkan nama pengguna dan sandi yang dienkode ke header HTTP dalam setiap permintaan.
Membuat permintaan
Langkah-langkah berikut diperlukan untuk membuat permintaan yang diautentikasi:
- Buat frasa sandi dengan menggabungkan nama pengguna dan sandi dengan titik koma, misalnya
username:password
. - Base64 mengenkode frasa sandi, misalnya
username:password
menjadidXNlcm5hbWU6cGFzc3dvcmQ=
. - Lampirkan header
Authorization
ke permintaan, dalam bentukAuthorization: Basic <encoded passphrase>
Cuplikan berikut mengilustrasikan cara melakukannya di Skrip Google Ads:
const USERNAME = 'your_username';
const PASSWORD = 'your_password';
const API_URL = 'http://<place_api_url_here>';
const authHeader = 'Basic ' + Utilities.base64Encode(USERNAME + ':' + PASSWORD);
const options = {
headers: {Authorization: authHeader}
}
// Include 'options' object in every request
const response = UrlFetchApp.fetch(API_URL, options);
Contoh autentikasi dasar
Bagian contoh kode berisi dua contoh yang menggambarkan penggunaan Autentikasi Dasar HTTP:
Plivo
Plivo adalah layanan yang memfasilitasi pengiriman dan penerimaan pesan SMS melalui API-nya. Contoh ini mengilustrasikan pengiriman pesan.
- Daftar dengan Plivo.
- Tempelkan contoh skrip ke dalam skrip baru di Google Ads.
- Ganti nilai
PLIVO_ACCOUNT_AUTHID
danPLIVO_ACCOUNT_AUTHTOKEN
dengan nilai dari dasbor pengelolaan. - Masukkan alamat email Anda seperti yang ditentukan dalam skrip untuk notifikasi error.
- Untuk menggunakan Plivo, Anda harus membeli nomor atau menambahkan nomor ke akun uji coba. Tambahkan nomor Sandbox yang dapat digunakan dengan akun uji coba.
- Tambahkan nomor yang akan muncul sebagai pengirim, dan nomor penerima.
- Perbarui
PLIVO_SRC_PHONE_NUMBER
dalam skrip ke salah satu nomor sandbox yang baru saja didaftarkan. Nomor ini harus menyertakan kode negara internasional, misalnya447777123456
untuk nomor Inggris Raya.
Twilio
Twilio adalah layanan lain yang memfasilitasi pengiriman dan penerimaan pesan SMS melalui API-nya. Contoh ini mengilustrasikan pengiriman pesan.
- Daftar dengan Twillio.
- Tempelkan contoh skrip ke dalam skrip baru di Google Ads.
- Ganti nilai
TWILIO_ACCOUNT_SID
danTWILIO_ACCOUNT_AUTHTOKEN
dengan nilai yang ditampilkan di halaman konsol akun. - Ganti
TWILIO_SRC_PHONE_NUMBER
dengan nomor dari dasbor--ini adalah nomor yang diotorisasi oleh Twilio untuk mengirim pesan.
OAuth 1.0
Banyak layanan populer yang menggunakan OAuth untuk autentikasi. OAuth tersedia dalam sejumlah ragam dan versi.
Sedangkan dengan autentikasi dasar HTTP, pengguna hanya memiliki satu nama pengguna dan sandi, OAuth memungkinkan aplikasi pihak ketiga diberi akses ke akun dan data pengguna, menggunakan kredensial khusus untuk aplikasi pihak ketiga tersebut. Selain itu, cakupan akses juga akan spesifik untuk aplikasi tersebut.
Untuk mengetahui latar belakang OAuth 1.0, lihat panduan OAuth Core. Secara khusus, lihat 6. Mengautentikasi dengan OAuth. Dalam OAuth 1.0 tiga kaki lengkap, prosesnya adalah sebagai berikut:
- Aplikasi ("Konsumen") mendapatkan token permintaan.
- Pengguna mengizinkan token permintaan.
- Aplikasi menukar token permintaan dengan token akses.
- Untuk semua permintaan resource berikutnya, token akses digunakan dalam permintaan yang ditandatangani.
Agar layanan pihak ketiga dapat menggunakan OAuth 1.0 tanpa interaksi pengguna (misalnya, seperti yang diperlukan skrip Google Ads), langkah 1, 2, dan 3 tidak dapat dilakukan. Oleh karena itu, beberapa layanan menerbitkan token akses dari konsol konfigurasi mereka, sehingga aplikasi dapat langsung melanjutkan ke langkah 4. Hal ini dikenal sebagai OAuth 1.0 satu kaki.
OAuth 1.0 di skrip Google Ads
Untuk skrip Google Ads, setiap skrip biasanya ditafsirkan sebagai aplikasi. Melalui halaman setelan konsol/administrasi untuk layanan, biasanya Anda harus:
- Siapkan konfigurasi aplikasi, untuk merepresentasikan skrip.
- Tentukan izin yang diperluas ke skrip.
- Dapatkan Kunci konsumen, Rahasia konsumen, token akses, dan rahasia akses untuk digunakan dengan OAuth satu kaki.
OAuth 2.0
OAuth 2.0 digunakan di API populer untuk memberikan akses ke data pengguna. Pemilik akun untuk layanan pihak ketiga tertentu memberikan izin ke aplikasi tertentu untuk mengizinkan aplikasi tersebut mengakses data pengguna. Keuntungannya adalah pemilik:
- Tidak perlu membagikan kredensial akunnya kepada aplikasi.
- Dapat mengontrol aplikasi mana yang memiliki akses ke data satu per satu, dan sejauh mana. (Misalnya, akses yang diberikan mungkin hanya baca, atau hanya ke subkumpulan data.)
Untuk menggunakan layanan yang mengaktifkan OAuth 2.0 dalam skrip Google Ads, ada beberapa langkah:
- Di luar skrip Anda
Berikan otorisasi agar Skrip Google Ads dapat mengakses data pengguna Anda melalui API pihak ketiga. Biasanya, hal ini akan melibatkan penyiapan aplikasi di konsol layanan pihak ketiga. Aplikasi ini mewakili Skrip Google Ads Anda.
Anda menentukan hak akses yang harus diberikan kepada aplikasi Skrip Google Ads, dan biasanya akan diberi client ID. Hal ini memungkinkan Anda, melalui OAuth 2, mengontrol aplikasi mana yang memiliki akses ke data Anda di layanan pihak ketiga, dan juga, aspek data mana yang dapat dilihat atau diubah oleh aplikasi tersebut.
- Dalam skrip Anda
Otorisasi dengan server jarak jauh. Bergantung pada jenis pemberian yang diizinkan server, serangkaian langkah yang berbeda, yang dikenal sebagai alur, harus diikuti, tetapi semuanya pada akhirnya akan menghasilkan token akses yang dikeluarkan yang akan digunakan untuk sesi tersebut untuk semua permintaan berikutnya.
Buat permintaan API. Teruskan token akses dengan setiap permintaan.
Alur otorisasi
Setiap jenis hibah dan alur yang sesuai memenuhi berbagai skenario penggunaan. Misalnya, alur yang berbeda digunakan saat pengguna berpartisipasi dalam sesi interaktif, berbeda dengan skenario saat aplikasi diwajibkan untuk berjalan di latar belakang tanpa kehadiran pengguna.
Penyedia API akan memutuskan jenis pemberian yang mereka terima, dan hal ini akan memandu cara pengguna melanjutkan integrasi API mereka.
Penerapan
Untuk semua alur OAuth yang berbeda, tujuannya adalah untuk mendapatkan token akses yang kemudian dapat digunakan selama sisa sesi untuk mengautentikasi permintaan.
Library contoh, mengilustrasikan cara mengautentikasi untuk setiap jenis alur yang berbeda. Setiap metode ini menampilkan objek yang mendapatkan dan menyimpan token akses, dan memfasilitasi permintaan yang diautentikasi.
Pola penggunaan umumnya adalah:
// Authenticate using chosen flow type
const urlFetchObj = OAuth2.<flow method>(args);
// Make request(s) using obtained object.
const response1 = urlFetchObj.fetch(url1);
const response2 = urlFetchObj.fetch(url2, options);
Pemberian kredensial klien
Pemberian kredensial klien adalah salah satu bentuk alur OAuth2 yang lebih sederhana, dengan aplikasi menukar ID dan secret, yang unik untuk aplikasi, sebagai imbalan atas penerbitan token akses berbatas waktu.
// Access token is obtained and cached.
const authUrlFetch = OAuth2.withClientCredentials(
tokenUrl, clientId, clientSecret, optionalScope));
// Use access token in each request
const response = authUrlFetch.fetch(url);
// ... use response
Pemberian token refresh
Pemberian token refresh mirip dengan pemberian kredensial klien, karena permintaan sederhana ke server akan menampilkan token akses yang dapat digunakan dalam sesi.
Mendapatkan token refresh
Perbedaannya dengan pemberian token refresh adalah bahwa detail yang diperlukan untuk pemberian kredensial klien berasal dari konfigurasi aplikasi (misalnya, di panel kontrol layanan), token refresh diberikan sebagai bagian dari alur yang lebih kompleks, seperti pemberian kode otorisasi, yang akan memerlukan interaksi pengguna:
- Menggunakan OAuth Playground untuk mendapatkan token refresh
OAuth2 playground menyediakan UI yang memungkinkan pengguna melalui pemberian kode otorisasi untuk mendapatkan token refresh.
Tombol setelan di kanan atas memungkinkan Anda menentukan semua parameter yang akan digunakan dalam alur OAuth, termasuk:
- Endpoint otorisasi: Digunakan sebagai awal alur untuk otorisasi.
- Endpoint token: Digunakan dengan token refresh untuk mendapatkan token akses.
- client ID dan secret: Kredensial untuk aplikasi.
- Menggunakan skrip untuk mendapatkan token refresh
Alternatif berbasis skrip untuk menyelesaikan alur tersedia dalam contoh pembuatan token refresh.
Penggunaan token refresh
Setelah otorisasi awal dilakukan, layanan dapat mengeluarkan token refresh yang kemudian dapat digunakan dengan cara yang serupa dengan alur kredensial klien. Dua contoh diberikan di bawah ini:
const authUrlFetch = OAuth2.withRefreshToken(tokenUrl, clientId, clientSecret,
refreshToken, optionalScope);
const response = authUrlFetch.fetch(url);
// ... use response
Contoh Search Ads 360
Search Ads 360 adalah contoh API yang dapat digunakan dengan token refresh. Dalam contoh ini, skrip menghasilkan dan menampilkan laporan. Lihat referensi Search Ads 360 API untuk mengetahui detail lengkap tindakan lain yang dapat dilakukan.
Membuat skrip
- Buat project baru di Konsol API, dan dapatkan client ID, secret klien, dan token refresh dengan mengikuti prosedur dalam panduan DoubleClick, yang memastikan Anda mengaktifkan DoubleClick Search API.
- Tempelkan contoh skrip ke dalam skrip baru di Google Ads.
- Tempel contoh library OAuth2 di bawah listingan kode.
- Ubah skrip agar berisi nilai yang benar untuk client ID, rahasia klien, dan token refresh.
Contoh Apps Script Execution API
Contoh ini mengilustrasikan cara menjalankan fungsi di Apps Script menggunakan Apps Script Execution API. Tindakan ini memungkinkan Apps Script dipanggil dari skrip Google Ads.
Membuat skrip Apps Script
Buat skrip baru. Contoh berikut akan mencantumkan 10 file dari Drive:
function listFiles() {
const limit = 10;
const files = [];
const fileIterator = DriveApp.getFiles();
while (fileIterator.hasNext() && limit) {
files.push(fileIterator.next().getName());
limit--;
}
return files;
}
Mengonfigurasi Apps Script untuk dieksekusi
- Simpan skrip.
- Klik Resource > Project Cloud Platform.
- Klik nama project untuk membuka Konsol API.
- Buka APIs & Services.
- Aktifkan API yang sesuai, dalam hal ini Drive API, dan Apps Script Execution API.
- Buat kredensial OAuth dari item Kredensial di menu.
- Kembali ke skrip, publikasikan skrip untuk dieksekusi dari Publish > Deploy as API Executable.
Membuat skrip Google Ads
- Tempelkan contoh skrip ke skrip baru di Google Ads.
- Selain itu, tempel contoh library OAuth2 di bawah daftar kode.
- Ubah skrip agar berisi nilai yang benar untuk client ID, rahasia klien, dan token refresh.
Akun layanan
Alternatif untuk jenis pemberian di atas adalah konsep akun layanan.
Akun layanan berbeda dengan yang disebutkan di atas karena tidak digunakan untuk mengakses data pengguna: Setelah autentikasi, permintaan dibuat oleh Akun Layanan atas nama aplikasi, bukan sebagai pengguna yang mungkin memiliki project. Misalnya, jika akun layanan menggunakan Drive API untuk membuat file, file tersebut akan menjadi milik akun layanan, dan secara default tidak dapat diakses oleh pemilik project.
Contoh Natural Language API Google
Natural Language API menyediakan analisis sentimen dan analisis entity untuk teks.
Contoh ini mengilustrasikan penghitungan sentimen untuk teks iklan—termasuk judul atau deskripsi. Hal ini memberikan ukuran untuk tingkat positif pesan dan besarnya pesan: Mana yang lebih baik, Kami menjual kue atau Kami menjual kue terbaik di London. Beli sekarang!?
Menyiapkan skrip
- Membuat project baru di Konsol API
- Mengaktifkan Natural Language API
- Aktifkan penagihan untuk project.
- Buat Akun Layanan. Download file JSON kredensial.
- Tempelkan contoh skrip ke dalam skrip baru di Google Ads.
- Selain itu, tempel contoh library OAuth2 di bawah daftar kode.
- Ganti nilai yang diperlukan:
serviceAccount
: Alamat email Akun Layanan, misalnyaxxxxx@yyyy.iam.gserviceaccount.com
.key
: Kunci dari file JSON yang didownload saat membuat Akun Layanan. Mulai-----BEGIN PRIVATE KEY...
dan berakhir...END PRIVATE KEY-----\n
.
Respons API
API dapat menampilkan data dalam berbagai format. Yang paling penting adalah XML dan JSON.
JSON
JSON biasanya lebih sederhana daripada XML untuk digunakan sebagai format respons. Namun, masih ada beberapa masalah yang dapat muncul.
Validasi respons
Setelah mendapatkan respons yang berhasil dari panggilan ke API, langkah berikutnya yang biasa dilakukan adalah menggunakan JSON.parse
untuk mengonversi string JSON menjadi objek JavaScript. Pada tahap ini, sebaiknya tangani kasus saat penguraian
gagal:
const json = response.getContentText();
try {
const data = JSON.parse(json);
return data;
} catch(e) {
// Parsing of JSON failed - handle error.
}
Selain itu, jika API tidak berada di bawah kontrol Anda, pertimbangkan bahwa struktur respons dapat berubah, dan properti mungkin tidak ada lagi:
// Less good approach
// Assumes JSON was in form {"queryResponse": ...} when parsed.
const answer = data.queryResponse;
// Better approach
if (data && data.queryResponse) {
const answer = data.queryResponse;
} else {
// Format of API response has changed - alert developer or handle accordingly
}
XML
Validasi
XML masih merupakan format populer untuk membuat API. Respons dari panggilan API
dapat diuraikan menggunakan
metode
XmlService
parse
:
const responseText = response.getContentText();
try {
const document = XmlService.parse(responseText);
} catch(e) {
// Error in XML representation - handle accordingly.
}
Meskipun XmlService.parse
mendeteksi error dalam XML dan menampilkan pengecualian
sesuai dengan itu, XmlService.parse
tidak memberikan kemampuan untuk memvalidasi XML terhadap
skema.
Elemen root
Dengan penguraian dokumen XML yang berhasil, elemen root diperoleh
menggunakan metode getRootElement()
:
const document = XmlService.parse(responseText);
const rootElement = document.getRootElement();
Namespace
Pada contoh berikut, Sportradar API digunakan untuk mendapatkan hasil sepak bola untuk pertandingan yang dipilih. Respons XML menggunakan format berikut:
<schedule xmlns="http://feed.elasticstats.com/schema/soccer/sr/v2/matches-schedule.xsd">
<matches>
...
</matches>
</schedule>
Perhatikan cara namespace ditentukan di elemen root. Oleh karena itu, Anda harus:
- Ekstrak atribut namespace dari dokumen.
- Gunakan namespace ini saat menjelajahi dan mengakses elemen turunan.
Contoh berikut menunjukkan cara mengakses elemen <matches>
dalam cuplikan dokumen di atas:
const document = XmlService.parse(xmlText);
const scheduleElement = document.getRootElement();
// The namespace is required for accessing child elements in the schema.
const namespace = scheduleElement.getNamespace();
const matchesElement = scheduleElement.getChild('matches', namespace);
Mendapatkan nilai
Dengan contoh dari jadwal sepak bola:
<match status="..." category="..." ... >
...
</match>
Atribut dapat diambil, misalnya:
const status = matchElement.getAttribute('status').getValue();
Teks yang terdapat dalam elemen dapat dibaca menggunakan getText()
, tetapi teks tersebut akan
digabungkan jika ada beberapa turunan teks dari suatu elemen. Pertimbangkan untuk menggunakan getChildren()
dan melakukan iterasi pada setiap turunan jika ada kemungkinan beberapa turunan teks.
Contoh Sportradar
Contoh Sportradar lengkap ini mengilustrasikan pengambilan detail pertandingan sepak bola, khususnya pertandingan Liga Utama Inggris. Soccer API adalah salah satu dari berbagai feed olahraga yang ditawarkan oleh Sportradar.
Menyiapkan akun Sportradar
- Buka situs developer Sportradar
- Daftar untuk mendapatkan akun uji coba.
- Setelah mendaftar, login ke akun Anda.
- Setelah login, buka MyAccount.
Sportradar memisahkan berbagai olahraga ke dalam API yang berbeda. Misalnya, Anda dapat membeli akses ke Soccer API, tetapi tidak ke Tennis API. Setiap Aplikasi yang Anda buat dapat memiliki olahraga yang berbeda dan kunci yang berbeda.
- Di bagian Applications, klik Create a new Application. Berikan nama dan deskripsi ke aplikasi, dan abaikan kolom situs.
- Hanya pilih Tetapkan kunci baru untuk Soccer Trial Europe v2.
- Klik Register Application.
Setelah berhasil, tindakan ini akan menghasilkan halaman yang berisi kunci API baru Anda.
- Tempelkan contoh skrip ke dalam skrip baru di Google Ads.
- Ganti kunci API dalam listingan dengan kunci yang diperoleh di atas, dan edit kolom alamat email.
Pemecahan masalah
Saat menggunakan API pihak ketiga, error dapat terjadi karena sejumlah alasan, misalnya:
- Klien yang mengeluarkan permintaan ke server dalam format yang tidak diharapkan oleh API.
- Klien mengharapkan format respons yang berbeda dengan yang ditemukan.
- Klien yang menggunakan token atau kunci yang tidak valid, atau nilai yang dibiarkan sebagai placeholder.
- Klien mencapai batas penggunaan.
- Klien yang memberikan parameter yang tidak valid.
Dalam semua kasus ini, dan lainnya, langkah pertama yang baik dalam mengidentifikasi penyebab masalah adalah memeriksa detail respons yang menyebabkan error.
Mengurai respons
Secara default, respons apa pun yang menampilkan error (kode status 400 atau lebih) akan ditampilkan oleh mesin skrip Google Ads.
Untuk mencegah perilaku ini, dan mengizinkan error dan pesan error untuk
diperiksa, tetapkan properti muteHttpExceptions
dari parameter opsional ke
UrlFetchApp.fetch
. Contoh:
const params = {
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, params);
if (response.getResponseCode() >= 400) {
// ... inspect error details...
}
Kode status umum
200 OK
menunjukkan keberhasilan. Jika respons tidak berisi data yang diharapkan, pertimbangkan bahwa:- Beberapa API memungkinkan spesifikasi kolom dan/atau format respons yang akan digunakan. Periksa dokumentasi API untuk mengetahui detailnya.
- API dapat memiliki beberapa resource yang dapat dipanggil. Lihat dokumentasi untuk menentukan apakah resource lain mungkin lebih sesuai untuk digunakan, dan akan menampilkan data yang Anda perlukan.
- API mungkin telah berubah sejak kode ditulis. Lihat dokumentasi atau developer untuk mendapatkan klarifikasi.
400 Bad Request
biasanya berarti ada yang salah dalam format atau struktur permintaan yang dikirim ke server. Periksa permintaan dan bandingkan dengan spesifikasi API untuk memastikannya sesuai dengan ekspektasi. Lihat Memeriksa permintaan untuk mengetahui detail tentang cara memeriksa permintaan.401 Unauthorized
biasanya berarti API dipanggil tanpa memberikan atau berhasil melakukan otorisasi.- Jika API menggunakan otorisasi dasar, pastikan header
Authorization
dibuat dan disediakan dalam permintaan. - Jika API menggunakan OAuth 2.0, pastikan token akses telah diperoleh dan diberikan sebagai token Pembawa.
- Untuk variasi otorisasi lainnya, pastikan kredensial yang diperlukan untuk permintaan disediakan.
- Jika API menggunakan otorisasi dasar, pastikan header
403 Forbidden
menunjukkan bahwa pengguna tidak memiliki izin untuk resource yang diminta.- Pastikan pengguna telah diberi izin yang diperlukan, misalnya, memberi pengguna akses ke file dalam permintaan berbasis file.
404 Not Found
berarti resource yang diminta tidak ada.- Pastikan URL yang digunakan untuk endpoint API sudah benar.
- Jika mengambil resource, pastikan resource yang direferensikan ada (misalnya, jika file ada untuk API berbasis file).
Memeriksa permintaan
Memeriksa permintaan berguna saat respons API menunjukkan bahwa permintaan dibentuk dengan buruk, misalnya, kode status 400. Untuk membantu memeriksa permintaan, UrlFetchApp
memiliki metode pendamping untuk metode fetch()
, yang disebut
getRequest()
Alih-alih mengirim permintaan ke server, metode ini membuat permintaan yang akan dikirim, lalu menampilkannya. Hal ini memungkinkan pengguna memeriksa elemen permintaan untuk memastikan permintaan terlihat benar.
Misalnya, jika data formulir dalam permintaan Anda terdiri dari banyak string yang digabungkan bersama, error mungkin terletak pada fungsi yang Anda buat untuk membuat data formulir tersebut. Secara sederhana:
const request = UrlFetchApp.getRequest(url, params);
console.log(request);
// Now make the fetch:
const response = UrlFetchApp.fetch(url, params);
// ...
akan memungkinkan Anda memeriksa elemen permintaan.
Mencatat permintaan dan respons ke dalam log
Untuk membantu seluruh proses pemeriksaan permintaan dan respons ke API pihak ketiga, fungsi helper berikut dapat digunakan sebagai pengganti langsung untuk UrlFetchApp.fetch()
, untuk mencatat permintaan dan respons.
Ganti semua instance
UrlFetchApp.fetch()
dalam kode Anda denganlogUrlFetch()
.Tambahkan fungsi berikut ke akhir skrip Anda.
function logUrlFetch(url, opt_params) { const params = opt_params || {}; params.muteHttpExceptions = true; const request = UrlFetchApp.getRequest(url, params); console.log('Request: >>> ' + JSON.stringify(request)); const response = UrlFetchApp.fetch(url, params); console.log('Response Code: <<< ' + response.getResponseCode()); console.log('Response text: <<< ' + response.getContentText()); if (response.getResponseCode() >= 400) { throw Error('Error in response: ' + response); } return response; }
Saat menjalankan skrip, detail semua permintaan dan respons akan dicatat ke dalam log di konsol, sehingga proses debug menjadi lebih mudah.