Google Ads komut dosyalarının güçlü bir özelliği, verilerle entegre etme olanağıdır. ve üçüncü taraf API'lerinden hizmetler satın alabilirsiniz.
Bu kılavuzda, komut dosyası yazmanıza yardımcı olacak aşağıdaki kavramlar diğer hizmetlere bağlan:
- HTTP istekleri yapma: Nasıl kullanılır?
Erişmek için
UrlFetchApp
harici API'ler. - Kimlik Doğrulama: Burada, sık karşılaşılan bazı kimlik doğrulama senaryolarını ele alıyoruz.
- Ayrıştırma yanıtları: Döndürülen JSON ve XML verilerinin nasıl işleneceği.
Ayrıca bir sayıya ait örnekler yaygın olarak kullanılan API'lere bakalım.
UrlFetchApp ile veri getirme
UrlFetchApp
şunları sağlar:
üçüncü taraf API'leriyle etkileşime geçmek için gerekli temel işlevler
Aşağıdaki örnekte, OpenWeatherMap'ı açın. OpenWeathermap'i seçmemizin sebebi oldukça basit bir yetkilendirme şeması ve API'sidir.
İstekte bulunun
OpenWeathermap dokümanları geçerli hava durumunu isteme biçimi şu şekilde:
http://api.openweathermap.org/data/2.5/weather?q=[location]&apikey=[apikey]
URL, ilk yetkilendirme örneğimizi sağlar: apikey
parametresi
gerekir ve değer her kullanıcı için benzersizdir. Bu anahtar,
kaydolma.
Kaydolduktan sonra, anahtarı kullanan bir istek aşağıdaki şekilde gönderilebilir:
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());
Bu kod çalıştırıldığında uzun bir JSON dizesi ortaya çıkar Google Ads komut dosyalarında günlük kaydı penceresine yazılan metin.
Sonraki adım, bunu hesabınızda kullanılabilecek bir biçime dönüştürmektir. komut dosyası.
JSON verileri
Birçok API, yanıtları JSON biçiminde sağlar. Bu durum, basit bir JavaScript nesnelerinin serileştirilmesi (örneğin, nesneler, diziler ve temel türler) dize olarak temsil edilebilir ve aktarılabilir.
Bir JSON dizesini (ör.
OpenWeatherMap: JavaScript nesnesine geri dönün ve
JSON.parse
yöntemini çağırın. Yukarıdaki örnekten devam edelim:
const json = response.getContentText();
const weatherData = JSON.parse(json);
console.log(weatherData.name);
// "London"
JSON.parse
yöntemi, dizeyi özelliği olan bir nesneye dönüştürür.
name
.
Şu konuyla ilgili daha fazla bilgi için Yanıtları ayrıştırma bölümüne bakın: farklı formatlardaki API yanıtlarıyla çalışma.
Hata işleme
Hata işleme, üçüncü taraf API'leriyle çalışırken dikkat edilmesi gereken önemli bir konudur çünkü üçüncü taraf API'leri genellikle sık sık değiştiğinden ve beklenmedik yanıt değerleri, örneğin:
- API'nin URL'si veya parametreleri bilginiz olmadan değiştirilebilir.
- API anahtarınızın (veya diğer kullanıcı kimlik bilgilerinin) süresi dolabilir.
- Yanıtın biçimi, bildirimde bulunulmadan değiştirilebilir.
HTTP durum kodları
Beklenmeyen yanıt olasılığı nedeniyle HTTP
durum kodu kullanabilir. Varsayılan olarak
Bir HTTP hata koduyla karşılaşılırsa UrlFetchApp
istisna oluşturur. Alıcı:
Bu davranışı değiştirdiğinizde,
şu örneği inceleyin:
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();
}
Yanıt yapısı
Geliştiriciler, üçüncü taraf API'leri değiştiğinden çoğu zaman
veya kontrol edebiliyorlar. Örneğin, name
özelliği
OpenWeathermap örneğinde döndürülen sonuç locationName
olarak değiştirildiğinde komut dosyaları
başarısız olur.
Bu nedenle, döndürülen yapının beklendiği gibi, örneğin:
const weatherData = JSON.parse(json);
if (weatherData && weatherData.name) {
console.log('Location is : ' + name);
} else {
console.log('Data not in expected format');
}
UrlFetchApp ile POST verileri
OpenWeathermap ile giriş örneği
yalnızca veri getirmesi gerekir. Genellikle, uzaktan kumandada durum değişmeyen API çağrıları
HTTP
GET
bağlantısını kullanma
yöntemidir.
GET
yöntemi UrlFetchApp
için varsayılan yöntemdir. Ancak bazı API çağrıları,
Örneğin, SMS mesajı gönderen bir hizmete yapılan aramalar gibi işlemler için başka yöntemler gerekir.
POST
veya PUT
gibi.
POST
çağrılarını UrlFetchApp
ile göstermek için aşağıdaki örnek
Slack ile entegrasyonu gösterir. Slack
uygulamasını kullanarak Slack kullanıcılarına ve gruplarına Slack mesajı gönderebilirsiniz.
Slack'i kurma
Bu kılavuzda, bir Slack hesabına daha önce kaydolduğunuz varsayılır.
Önceki örnekte verilen OpenWeatherMap'te olduğu gibi, jeton. Slack benzersiz bir URL kullanarak Ekibinize, Gelen Webhook adı verilen iletiler gönderebilir.
Gelen Webhook'u oluşturun Gelen Web Kancaları Entegrasyonunu ekleyin ve talimatları uygulayın. İlgili içeriği oluşturmak için kullanılan mesaj için kullanılacak bir URL yayınlamalıdır.
POST isteği gönderme
Gelen Webhook'unuzu oluşturduktan sonra POST
isteğinde bulunmak için
options
UrlFetchApp.fetch
:
method
: Belirtildiği gibi, bu varsayılan olarakGET
değerine ayarlanır, ancak burada bunu geçersiz kılar vePOST
olarak ayarla.payload
:POST
kapsamında sunucuya gönderilecek verilerdir. isteğinde bulunabilirsiniz. Bu örnekte Slack, bir nesnenin JSON biçiminde serileştirilmesini bekliyor olduğu gibi, Slack dokümanlarına göz atın. Bunun içinJSON.stringify
yöntemi kullanılır veContent-Type
,application/json
olarak ayarlanır.// 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);
Genişletilmiş Slack örneği
Yukarıdaki örnekte, Slack'e gelen iletilerin etkinleştirilmesi için gereken minimum süre gösterilmektedir. genişletilmiş örnek, bir Kampanya Performansı'nın oluşturulması ve gönderilmesi Bir kullanıcıya bildirin bazı biçimlendirme ve görüntüleme seçeneklerini göreceksiniz.
Slack'teki ileti biçimlendirmesine bakın dokümanlarına göz atabilirsiniz.
Form verileri
Yukarıdaki örnekte, payload
özelliği olarak bir JSON dizesinin kullanıldığı gösterilmektedir
(POST
isteği için)
UrlFetchApp
, payload
biçimine bağlı olarak farklı yaklaşımlar uygular
POST
isteğini oluşturmak için:
payload
bir dize olduğunda, dize bağımsız değişkeni başlık ekleyin.payload
bir nesne olduğunda, örneğin bir değer eşlemesi olduğunda:{to: 'mail@example.com', subject:'Test', body:'Hello, World!'}
Anahtar/değer çiftleri, form verilerine dönüştürülür:
subject=Test&to=mail@example.com&body=Hello,+World!
Ayrıca, isteğin
Content-Type
başlığı şu şekilde ayarlandı:application/x-www-form-urlencoded
.
Bazı API'ler, POST istekleri gönderilirken form verilerinin kullanılmasını gerektirir. Dolayısıyla bu JavaScript nesnelerinden form verilerine otomatik dönüştürme, göz önünde bulundurun.
HTTP temel kimlik doğrulaması
HTTP temel kimlik doğrulama, birçok API tarafından kullanılır.
Kimlik doğrulama, Her istekteki HTTP üstbilgileri.
İstek oluşturma
Kimliği doğrulanmış bir istek oluşturmak için aşağıdaki adımlar gereklidir:
- Kullanıcı adı ve şifreyi bir
iki nokta üst üste, örneğin
username:password
. - Base64, parolayı kodlar. Örneğin
username:password
şöyle olur:dXNlcm5hbWU6cGFzc3dvcmQ=
. - İsteğe
Authorization: Basic <encoded passphrase>
biçiminde birAuthorization
başlığı ekleyin
Aşağıdaki snippet, Google Ads komut dosyalarında bunun nasıl yapılacağını göstermektedir:
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);
Temel kimlik doğrulama örnekleri
Kod örnekleri bölümü, HTTP Temel Kimlik Doğrulaması'nı kullanmayı gösteren iki örnek içerir:
Plivo
Plivo, yüksek kaliteli ileti gönderme ve API'leri aracılığıyla SMS mesajları alarak Bu örnekte, mesaj.
- Plivo'ya kaydolun.
- Örnek komut dosyasını şuraya yapıştırın: komut dosyası oluşturabilirsiniz.
PLIVO_ACCOUNT_AUTHID
vePLIVO_ACCOUNT_AUTHTOKEN
değerlerini değerlerini yönetim kontrol panelinde bulabilirsiniz.- ile ilgili bildirim için e-posta adresinizi komut dosyasında belirtildiği gibi ekleyin: hatalar.
- Plivo'yu kullanmak için numara satın almanız veya denemeye numara eklemeniz gerekir hesap. Şunları yapabilecek Korumalı Alan numaraları ekleyin deneme hesabıyla birlikte kullanılması gerekir.
- Hem gönderen olarak görünecek numarayı hem de alıcıyı ekleyin sayı.
- Komut dosyasındaki
PLIVO_SRC_PHONE_NUMBER
değerini, korumalı alan numaralarından biriyle güncelleyin yeni bir kayıt başladı. Bu, Birleşik Krallık numarası için447777123456
örneği.
Twilio
Twilio, ileti ve veri alışverişi API'leri aracılığıyla SMS mesajları alarak Bu örnekte, mesaj.
- Twillio'ya kaydolun.
- Örnek komut dosyasını yapıştırın komut dosyasına dönüştürmeyi öğreneceksiniz.
TWILIO_ACCOUNT_SID
veTWILIO_ACCOUNT_AUTHTOKEN
değerlerini değerlerinin hesap konsolu sayfasında gösterilmesidir.TWILIO_SRC_PHONE_NUMBER
yerine kontrol paneli: Bu, numaraya Twilio tarafından ileti gönderilmesine izin verildi.
OAuth 1.0
Popüler hizmetlerin çoğu, kimlik doğrulama için OAuth kullanır. OAuth pek çok farklı sektörde aroma ve versiyonları var.
HTTP temel kimlik doğrulamasında ise kullanıcı tek bir kullanıcı adı ve şifresi olduğundan OAuth, üçüncü taraf uygulamalarının kullanıcıya özel kimlik bilgileri kullanılarak kullanıcının hesabına ve verilerine erişim izni verildi üçüncü taraf uygulamasıdır. Ayrıca, erişim düzeyi söz konusu uygulamaya özgüdür.
OAuth 1.0 arka planı için OAuth Core kılavuzuna göz atın. Özellikle bkz. 6. OAuth ile kimlik doğrulama. Tam üç ayaklı OAuth 1.0 için işlem aşağıdaki gibidir:
- Uygulama ("Tüketici") bir istek jetonu alır.
- Kullanıcı, istek jetonunu yetkilendirir.
- Uygulama, erişim jetonu almak için istek jetonunu değiştirir.
- Sonraki tüm kaynak istekleri için erişim jetonu imzalı bir isteğinde bulunabilirsiniz.
Üçüncü taraf hizmetlerin OAuth 1.0'ı kullanıcı etkileşimi olmadan kullanması için (örneğin, için 1, 2 ve 3 numaralı adımların uygulanması mümkün değildir. Bu nedenle, bazı hizmetler kendi yapılandırmalarından bir erişim jetonu yayınlar konsolunu kullanarak uygulamanın doğrudan 4. adıma geçmesine izin verin. Bu, tek ayaklı OAuth 1.0'dır.
Google Ads komut dosyalarında OAuth 1.0
Google Ads komut dosyalarında, her komut dosyası genellikle bir uygulama olarak yorumlanır. Hizmete ilişkin konsol/yönetim ayarları sayfasından bu genellikle gerekli olan bazı araçlar:
- Komut dosyasını temsil edecek bir uygulama yapılandırması oluşturun.
- Komut dosyasına hangi izinlerin genişletileceğini belirtin.
- Kullanım için Tüketici anahtarı, Tüketici sırrı, erişim jetonu ve erişim sırrı edinme her şeyi öğreteceğim.
OAuth 2.0
OAuth 2.0, popüler API'lerde aşağıdakilere erişim sağlamak için kullanılır: kullanıcı verileri. Belirli bir üçüncü taraf hizmeti için hesabın sahibi kullanıcı verilerine erişmelerine olanak sağlamak için belirli uygulamalara erişim izni vermelidir. İlgili içeriği oluşturmak için kullanılan avantajı, sahibinin:
- Hesap kimlik bilgilerini uygulamayla paylaşması gerekmez.
- Verilere hangi uygulamaların bağımsız olarak erişebileceğini ve ne ölçüde. (Örneğin, verilen erişim salt okunur olabilir veya veri alt kümesi olabilir.)
Google Ads komut dosyalarında OAuth 2.0 özellikli hizmetleri kullanmak için aşağıdaki yöntemlerden yararlanabilirsiniz: için şu adımları izleyin:
- Komut dosyanızın dışında
Google Ads Komut Dosyaları'na üçüncü taraf API. Çoğu durumda bu, bir proje yöneticisinin uygulamasını kullandığınızdan emin olun. Bu uygulama Google Ads komut dosyanızı temsil eder.
Google Ads Komut Dosyası uygulamasının hangi erişim haklarına sahip olması gerektiğini siz belirlersiniz. verilir ve buna genellikle bir istemci kimliği atanır. Böylece proje boyunca OAuth 2, belirli bir sürümde hangi uygulamaların verilerinize erişimi olduğunu kontrol etmek için ve ayrıca verilerin hangi özelliklerini görebileceklerini ya da değiştirebilirsiniz.
- Komut dosyanızda
Uzak sunucuyla yetkilendir. İzin türüne bağlı olarak sunucu tarafından izin verilmişse akış olarak bilinen farklı bir ancak tüm bunlar sonuçta bir erişim jetonunun bu oturumda sonraki istekler için kullanılır.
API isteklerinde bulunun. Her istekle birlikte erişim jetonunu iletin.
Yetkilendirme akışları
Her hibe türü ve ilgili akış, farklı kullanım senaryolarına hitap eder. Örneğin, Örneğin, kullanıcı etkileşimli bir oturuma katılırken farklı bir akış kullanılır. uygulamasında çalışması gereken bir senaryonun aksine, arka planda çalışmaya devam edebilir.
API sağlayıcılar hangi izin türlerini kabul edeceklerine karar verir ve bu durum, Kullanıcının API entegrasyonunda nasıl ilerlediği.
Uygulama
Farklı OAuth akışlarının tümü için amaçlanan erişim jetonu almaktır. Ardından isteklerin kimliğini doğrulamak amacıyla oturumun geri kalanında kullanılabilir.
Örnek kitaplık , her farklı akış türü için kimlik doğrulamasının nasıl yapılacağını gösterir. Bunların her biri Yöntemleri, erişim jetonunu alan ve depolayan bir nesne döndürür ve kimliği doğrulanmış istekleri kolaylaştırır.
Genel kullanım şekli şöyledir:
// 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);
Müşteri kimlik bilgileri verilir
İstemci kimlik bilgileri izni: uygulamanın, yeni bir OAuth2 akışı biçimi olduğu için Bir Sınırlı süreli erişim jetonu.
// 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
Yenileme jetonu izni
Yenileme jetonu izni, istemci kimlik bilgisi verme işlemine benzer çünkü sunucuya gönderilen basit bir istek, kullanılabilecek bir erişim jetonu döndürür ele alacağız.
Yenileme jetonu alma
Yenileme jetonu verilmesiyle ilgili fark, ayrıntıların istemci kimlik bilgileri izninin uygulama yapılandırmasından gelmesi için gerekir (örneğin, hizmetin kontrol panelinde) yenileme jetonu verilir yetkilendirme kodu gibi daha karmaşık bir akışın parçası olarak izin ver; bu işlem, etkileşim:
- Yenileme jetonu almak için OAuth Playground'u kullanma
OAuth2 oyun alanı, kullanıcının gerçekleştirmesine izin veren bir kullanıcı arayüzü sunar. .
Sağ üstteki ayarlar düğmesi, tüm parametreleri tanımlamanıza olanak sağlar OAuth akışında kullanılacak filtre seçenekleri:
- Yetkilendirme uç noktası: Yetkilendirme akışının başlangıcı olarak kullanılır.
- Jeton uç noktası: Erişim jetonu almak için yenileme jetonuyla birlikte kullanılır.
- client ID and secret (İstemci kimliği ve gizli anahtar): Uygulamanın kimlik bilgileri.
- Yenileme jetonu almak için komut dosyası kullanma
Akışı tamamlamak yerine komut dosyası tabanlı bir alternatifi yenileme jetonu nesil örneklem.
Jeton kullanımını yenile
İlk yetkilendirme yapıldıktan sonra hizmetler yenileme yapabilir bu kimlik, istemci kimlik bilgileri akışına benzer şekilde kullanılabilir. Aşağıda iki örnek verilmiştir:
const authUrlFetch = OAuth2.withRefreshToken(tokenUrl, clientId, clientSecret,
refreshToken, optionalScope);
const response = authUrlFetch.fetch(url);
// ... use response
Search Ads 360 örneği
Search Ads 360, yenileme jetonuyla kullanılabilecek bir API örneğidir. Bu örnekte, bir komut dosyası raporu ekleyin. Arama Ağı Reklamlarına Diğer işlemlerin tüm ayrıntıları için 360 API referansı bir yöntem de vardır.
Komut dosyasını oluşturun
- API Konsolu'nda yeni bir proje oluşturun. ve aşağıdaki adımları izleyerek bir istemci kimliği, istemci gizli anahtarı ve yenileme jetonu edinin: lütfen deneyin, DoubleClick Search API'yi etkinleştirdiğinizden emin olun.
- Örneği yapıştırın komut dosyasını komut dosyası oluşturun.
- Örnek OAuth2 etiketini yapıştırın kitaplığının altındaki daha fazla bilgi edineceksiniz.
- Komut dosyasını, istemci kimliği, istemci gizli anahtarı ve gizli anahtar değerleri için doğru değerleri içerecek şekilde değiştirin. ve yenileme jetonu.
Apps Komut Dosyası Yürütme API'si örneği
Bu örnekte, Apps Komut Dosyası'nda Komut Dosyası Yürütme API'si. Bu işlem, Apps Komut Dosyası'nın Google Ads komut dosyalarından çağrılmalıdır.
Apps Komut Dosyası oluşturma
Yeni bir komut dosyası oluşturun. Aşağıdaki örnekte Drive'dan 10 dosya:
function listFiles() {
const limit = 10;
const files = [];
const fileIterator = DriveApp.getFiles();
while (fileIterator.hasNext() && limit) {
files.push(fileIterator.next().getName());
limit--;
}
return files;
}
Apps Komut Dosyası'nı yürütme için yapılandırma
- Komut dosyasını kaydedin.
- Kaynaklar > Cloud Platform projesi
- API Konsolu'na gitmek için proje adını tıklayın.
- API'ler ve Hizmetler.
- Uygun API'leri etkinleştirin. Bu örnekte, Drive API ve Uygulamalar Komut Dosyası Yürütme API.
- Menüdeki Credentials (Kimlik bilgileri) öğesinden OAuth kimlik bilgilerini oluşturun.
- Komut dosyanıza dönüp, komut dosyasını Yayınla > API Yürütülebilir olarak dağıtın.
Google Ads komut dosyasını oluşturma
- Örneği yapıştırın komut dosyasını komut dosyası oluşturabilirsiniz.
- Ayrıca, örnek OAuth2 etiketini yapıştırın. kitaplığının altındaki daha fazla bilgi edineceksiniz.
- Komut dosyasını, istemci kimliği, istemci gizli anahtarı ve gizli anahtar değerleri için doğru değerleri içerecek şekilde değiştirin. ve yenileme jetonu.
Hizmet hesapları
Yukarıdaki izin türlerine alternatif olarak hizmet hesaplar.
Hizmet hesapları, kullanıcılara erişmek için kullanılmadıklarından yukarıdakilerden farklıdır. veriler: Kimlik doğrulama sonrasında, istekler adına Hizmet Hesabı tarafından yapılır projenin sahibi olan kullanıcı olarak değil, Örneğin, dosya oluşturmak için Drive API'yi kullanması gerektiğini belirten hizmet hesabına ait olduğunu ve varsayılan olarak projenin sahibidir.
Google Natural Language API örneği
natural language API, duyarlılık ve analiz varlık analizi.
Bu örnekte, duyarlılık (başlık veya açıklama dahil) kullanın. Bu sayede, hedeflerinize ulaşmak için mesajının ne kadar olumlu olduğuna ve büyüklüğüne Pasta satıyoruz veya Londra'nın en iyi pastalarını satıyoruz. Hemen alın!
Komut dosyasını ayarlama
- API Konsolu'nda yeni bir proje oluşturun
- Doğal Dil'i etkinleştirin. API
- Proje için faturalandırmayı etkinleştirin.
- Hizmet Oluşturma Hesap. Kimlik bilgileri JSON dosyasını indirin.
- Örneği yapıştırın komut dosyasını yeni bir komut dosyası oluşturun.
- Ayrıca, örnek OAuth2 etiketini yapıştırın. kitaplığının altındaki daha fazla bilgi edineceksiniz.
- Gerekli değerleri değiştirin:
serviceAccount
: Hizmet hesabının e-posta adresi (ör.xxxxx@yyyy.iam.gserviceaccount.com
.key
: Hizmet oluşturulurken indirilen JSON dosyasındaki anahtar. Hesap'a dokunun.-----BEGIN PRIVATE KEY...
tarihinde başlayıp...END PRIVATE KEY-----\n
tarihinde sona erecek.
API yanıtları
API'ler çeşitli biçimlerde veri döndürebilir. Bunlardan en önemlileri XML ve JSON olur.
JSON
JSON genellikle XML'den daha basittir ve yanıt formatını kullanın. Ancak yine de bazı sorunlar ortaya çıkabilir.
Yanıt doğrulaması
API'ye yapılan çağrıdan başarılı bir yanıt almanız, normal şartlarda
sonraki adım, JSON dizesini JavaScript'e dönüştürmek için JSON.parse
kullanmaktır
nesnesini tanımlayın. Bu noktada, ayrıştırılan ürünün daha büyük bir kısmının ayrıştırıldığı
başarısız sonuçlar:
const json = response.getContentText();
try {
const data = JSON.parse(json);
return data;
} catch(e) {
// Parsing of JSON failed - handle error.
}
Ayrıca, API sizin kontrolünüz altında değilse, yanıt değişebilir ve özellikler artık mevcut olmayabilir:
// 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
Doğrulama
XML, API oluşturmak için hâlâ popüler bir biçimdir. API çağrısından gelen yanıt
kodu ile ayrıştırılabilir
XmlService
parse
yöntem:
const responseText = response.getContentText();
try {
const document = XmlService.parse(responseText);
} catch(e) {
// Error in XML representation - handle accordingly.
}
XmlService.parse
, XML'deki hataları tespit edip istisnalar bildirirken
uyumlu olmadığı takdirde, XML'i belirli bir
şema.
Kök öğe
XML belgesinin başarılı bir şekilde ayrıştırıldığı göz önünde bulundurulduğunda kök öğe,
getRootElement()
yöntemini kullanarak:
const document = XmlService.parse(responseText);
const rootElement = document.getRootElement();
Ad alanları
Aşağıdaki örnekte Sportradar API. , seçilen maçlar için futbol sonuçlarını almak amacıyla kullanılır. XML yanıtı şu biçimdedir:
<schedule xmlns="http://feed.elasticstats.com/schema/soccer/sr/v2/matches-schedule.xsd">
<matches>
...
</matches>
</schedule>
Ad alanının kök öğede nasıl belirtildiğine dikkat edin. Bu nedenle, gerekli olan bazı araçlar:
- Belgeden ad alanı özelliğini çıkarın.
- Alt öğelere geçiş yaparken ve bu öğelere erişirken bu ad alanını kullanın.
Aşağıdaki örnekte, yukarıdaki <matches>
öğesine nasıl erişileceği gösterilmektedir
belge snippet'i:
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);
Değerler elde etme
Futbol programındaki örneğe bakalım:
<match status="..." category="..." ... >
...
</match>
Özellikler alınabilir. Örneğin:
const status = matchElement.getAttribute('status').getValue();
Bir öğede bulunan metin getText()
kullanılarak okunabilir, ancak bu
bir öğenin birden fazla metin alt öğesi olduğunda birleştirilemez. Dikkatlice
birden fazla alt öğe varsa getChildren()
kullanılarak ve her bir alt öğe için yinelenerek
gibi metinlerdir.
Sportradar örneği
Bu Sportradar'ın tamamı example ile ilgili açıklama futbol maçlarının ayrıntılarını, özellikle de İngiltere Premier Ligi'ni alma şununla eşleşir: Soccer API Sportradar tarafından sunulan çok sayıda spor feed'inden biridir.
Sportradar hesabı oluşturun
- Sportradar geliştirici sitesine gidin
- Deneme hesabına kaydolun.
- Kaydolduktan sonra hesabınızda oturum açın.
- Giriş yaptıktan sonra MyAccount'a gidin.
Sportradar, farklı sporları farklı API'lere ayırır. Örneğin, Soccer API'ye erişim satın alabilir ancak Tennis API'ye erişim satın alamaz. Her biri Oluşturduğunuz uygulamayla ilişkili farklı sporlar olabilir ve kullanabilirsiniz.
- Uygulamalar bölümünde Yeni uygulama oluştur'u tıklayın. Başvuruyu verin bir ad ve açıklama girin ve web sitesi alanını dikkate almayın.
- Yalnızca Futbol Denemesi Avrupa v2 için yeni anahtar ver'i seçin.
- Uygulamayı Kaydet'i tıklayın.
İşlem başarılı olduktan sonra, yeni API anahtarınızın bulunduğu bir sayfa açılır.
- Örnek komut dosyasını yapıştırın komut dosyasına dönüştürmeyi öğreneceksiniz.
- Girişteki API anahtarını yukarıda alınan anahtarla değiştirin ve e-posta adresi alanı
Sorun giderme
Üçüncü taraf API'lerle çalışırken, hatalar çeşitli nedenlerle ortaya çıkabilir: örnek:
- Sunucuya, API'nin beklemediği bir biçimde istek gönderen istemciler.
- Müşteriler, karşılaşılan yanıt biçiminden farklı bir yanıt biçimi beklemektedir.
- Geçersiz jeton veya anahtarlar kullanan istemciler ya da yer tutucu olarak kalan değerler.
- Kullanım sınırlarına ulaşan istemciler.
- Geçersiz parametreler sağlayan istemciler.
Tüm bu durumlarda ve diğer durumlarda, sorunun nedenini belirlemek için iyi bir ilk adım önemli olan, hataya neden olan yanıtın ayrıntılarını incelemektir.
Yanıtları ayrıştır
Varsayılan olarak, hata döndüren tüm yanıtlar (durum kod 400 veya üzeriyse) Google Ads komut dosyaları motoru tarafından atılabilir.
Bu davranışı önlemek ve hata ile hata mesajının sisteme
isteğe bağlı parametrelerin muteHttpExceptions
özelliğini şuna ayarlayın:
UrlFetchApp.fetch
. Örneğin:
const params = {
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, params);
if (response.getResponseCode() >= 400) {
// ... inspect error details...
}
Yaygın durum kodları
200 OK
, başarılı olduğunu gösterir. Yanıt beklenen şunları göz önünde bulundurun:- Bazı API'ler hangi alanların ve/veya yanıt biçiminin pek de iyi olmadığını unutmayın. Bu konuyla ilgili ayrıntılar için API dokümanlarını inceleyin.
- Bir API'nin çağrılabilecek birden fazla kaynağı olabilir. Destek için: farklı bir kaynağın daha iyi olup olmadığını ve ihtiyacınız olan verileri döndürecektir.
- Kod yazıldıktan sonra API değişmiş olabilir. Destek için: geliştiriciden kontrol edin.
400 Bad Request
genellikle sunucuya gönderilen isteğin biçimlendirmesi veya yapısı. Şunu inceleyin: API spesifikasyonlarıyla karşılaştırıp API spesifikasyonlarına uygun olduğundan emin olmak için emin olmanız gerekir. Aşağıdakilerle ilgili ayrıntılar için İstekleri inceleme bölümüne bakın: inceleme konusunu işleyeceğiz.401 Unauthorized
genellikle API'nin yardımcı olur.- API temel yetkilendirme kullanıyorsa
Authorization
üstbilgisinin oluşturulmakta ve sağlanıyordur. - API, OAuth 2.0 kullanıyorsa erişim jetonunun alındığından emin olun ve hamiline ait jeton olarak sağlanıyorsa.
- Yetkilendirmeyle ilgili diğer tüm varyasyonlar için, istek için kimlik bilgileri sağlanıyor.
- API temel yetkilendirme kullanıyorsa
403 Forbidden
, kullanıcının kaynak için izni olmadığını gösterir emin olun.- Kullanıcıya gerekli izinlerin verildiğinden emin olun. Örneğin, Kullanıcı, dosya tabanlı bir istekte dosyaya erişim izni verebilir.
404 Not Found
, istenen kaynağın mevcut olmadığı anlamına gelir.- API uç noktası için kullanılan URL'nin doğru olduğundan emin olun.
- Bir kaynak getiriyorsanız başvurulan kaynağın mevcut olduğundan emin olun (örneğin, dosya, dosya tabanlı bir API için mevcutsa).
İstekleri inceleme
API yanıtları isteğin kötü olduğunu belirttiğinde istekleri incelemek yararlı olur
bir 400 durum kodu olabilir. Taleplerin incelenmesine yardımcı olmak için UrlFetchApp
fetch()
yöntemi için
getRequest()
Bu yöntem, sunucuya istek göndermek yerine isteği oluşturur gönderilmiş olan bir e-posta alırsınız ve ardından dosyayı geri döndürür. Bu, kullanıcıya İsteğin doğru göründüğünden emin olmak için istek öğelerini inceleyin.
Örneğin, isteğinizdeki form verileri birleştirilmiş çok sayıda dizeden oluşuyorsa bu formu oluşturmak için oluşturduğunuz fonksiyonda hata olabilir. dışı verilerdir. En basit şekilde:
const request = UrlFetchApp.getRequest(url, params);
console.log(request);
// Now make the fetch:
const response = UrlFetchApp.fetch(url, params);
// ...
istek öğelerini incelemenize olanak tanır.
İstekleri ve yanıtları günlüğe kaydet
Talepleri ve yanıtları inceleme sürecinin tamamında yardımcı olmak için
üçüncü taraf API'sini kullanıyorsanız aşağıdaki yardımcı işlev,
hem istekleri hem de yanıtları günlüğe kaydetmek için UrlFetchApp.fetch()
öğesinin yerine geçer.
Kodunuzdaki tüm
UrlFetchApp.fetch()
örneklerini şununla değiştirin:logUrlFetch()
.Aşağıdaki işlevi komut dosyanızın sonuna ekleyin.
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; }
Komut dosyanızı yürütürken tüm isteklerin ve yanıtların ayrıntıları şuraya kaydedilir: hata ayıklamayı kolaylaştırabilir.