Video: 2019 atölyesindeki hatalarla ilgili konuşmaya göz atın
Hatalar, yanlış ortam kurulumundan, yazılımınızdaki bir hatadan veya kullanıcıdan gelen geçersiz girişten kaynaklanabilir. Kaynak ne olursa olsun, sorunu gidermeniz ve kodunuzu düzeltmeniz ya da kullanıcı hatasını ele alacak mantık eklemeniz gerekir. Bu kılavuzda, Google Ads API'den kaynaklanan hataları giderirken uygulanabilecek bazı en iyi uygulamalar ele alınmaktadır.
Bağlantıyı sağlama
Google Ads API'ye erişiminizin olduğundan ve doğru bir kurulum yaptığınızdan emin olun. Yanıtınız HTTP hataları döndürüyorsa bunları dikkatlice ele aldığınızdan ve kodunuzdan kullanmak istediğiniz hizmetlere ulaştığınızdan emin olun.
Hizmetlerin kimliğinizi doğrulayabilmesi için kimlik bilgileriniz isteğinize yerleştirilir. Özellikle istemci kitaplıklarını kullanmadan çağrıları ele alacaksanız Google Ads API isteklerinin ve yanıtlarının yapısı hakkında bilgi edinin. Her istemci kitaplığı, kimlik bilgilerinizi yapılandırma dosyasına eklemeyle ilgili belirli talimatlarla birlikte gönderilir (İstemci kitaplığının README dosyasına bakın).
Doğru kimlik bilgilerini kullandığınızdan emin olun. Hızlı Başlangıç kılavuzumuzda, ihtiyacınız olan doğru seti edinme süreciyle ilgili bilgi verilmektedir. Örneğin, aşağıdaki yanıt hatası, kullanıcının geçersiz kimlik doğrulama kimlik bilgilerini gönderdiğini gösterir:
{ "error": { "code": 401, "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.", "status": "UNAUTHENTICATED", "details": [ { "@type": "type.googleapis.com/google.rpc.DebugInfo", "detail": "Authentication error: 2" } ] } }
Bu adımları uyguladığınız halde sorun yaşamaya devam ediyorsanız Google Ads API hatalarını giderme adımlarına göz atmanın zamanı gelmiştir.
Sorunu belirleme
Google Ads API, hataları genellikle yanıttaki hataların listesini içeren bir JSON hata nesnesi olarak bildirir. Bu nesneler, hata kodunun yanı sıra hatanın neden oluştuğunu açıklayan bir mesaj da sağlar. Bunlar, sorunun ne olabileceğine dair ilk sinyallerinizdir.
{
"errors": [
{
"errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
"message": "The field mask contained an invalid field: 'keyword/matchtype'.",
"location": { "operationIndex": "1" }
}
]
}
Tüm istemci kitaplıklarımız, yanıttaki hataları kapsayan istisnalar atar. Bu istisnaları yakalayıp günlükte veya sorun giderme ekranında mesajları yazdırmak, başlamak için mükemmel bir yöntemdir. Bu bilgileri uygulamanızdaki diğer günlüğe kaydedilen etkinliklerle entegre etmek, sorunu tetikleyen şeyin ne olabileceğine dair iyi bir genel bakış sunar. Günlüklerdeki hatayı belirledikten sonra ne anlama geldiğini anlamanız gerekir.
Hatayı araştırma
En sık karşılaşılan hataları kapsayan Yaygın Hatalar dokümanımıza bakın. Hata mesajını, ilgili API referanslarını ve hatayı nasıl önleyeceğinizi veya ele alacağınızı açıklar.
Sık karşılaşılan hatalar dokümanımızda hatadan özellikle bahsedilmiyorsa referans dokümanlarımıza göz atıp hata dizesini arayın.
API ile ilgili deneyimlerini paylaşan diğer geliştiricilere erişmek için destek kanallarımızı arayın. Başka bir kullanıcı, yaşadığınız sorunla karşılaşıp çözüm bulmuş olabilir.
Belgelenmemiş hatalarla karşılaşırsanız bunları forumda bize bildirin.
Doğrulama veya hesap sınırı sorunlarını giderme konusunda yardım almak için Google Ads Yardım Merkezi'ne gidin. Google Ads API, temel Google Ads ürününün kurallarını ve sınırlamalarını devralır.
Blog yayınları, uygulamanızla ilgili sorunları giderirken bazen iyi bir referans olabilir.
Hatayı araştırdıktan sonra temel nedeni belirleme zamanı gelmiştir.
Nedeni bulma
Hatanın nedenini belirlemek için istisna mesajını kontrol edin. Yanıtı inceledikten sonra, olası bir neden olup olmadığını kontrol edin. Bazı Google Ads API hata mesajlarında, GoogleAdsError
öğesinin location
alanında hatanın istekteki yerini belirten bir fieldPathElements
yer alır. Örneğin:
{
"errors": [
{
"errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
"message": "Criteria type can not be targeted.",
"trigger": { "stringValue": "" },
"location": {
"operationIndex": "0",
"fieldPathElements": [ { "fieldName": "keyword" } ]
}
}
]
}
Bir sorunla ilgili sorun giderirken uygulamanızın API'ye yanlış bilgiler sağlaması söz konusu olabilir. Hata ayıklamanıza yardımcı olması için Eclipse (özellikle Java geliştirmek için kullanılan ancak diğer diller için eklentileri olan ücretsiz ve açık kaynak bir IDE) gibi bir etkileşimli geliştirme ortamı (IDE) kullanmanızı önemle tavsiye ederiz. Bu sayede, kodunuzda durak noktaları belirleyebilir ve satır satır ilerleyebilirsiniz.
İsteğin, uygulama girişlerinizle eşleştiğinden emin olmak için tekrar kontrol edin (ör. kampanyanın adı isteğe dahil edilmemiş olabilir). Google Ads API seyrek güncellemeleri desteklediğinden, yapmak istediğiniz güncellemelerle eşleşen bir alan maskesi gönderdiğinizden emin olun. Bir değiştirme isteğinde bir alanın alan maskesinden çıkarılması, API'nin bu alanı değiştirmemesi gerektiğini gösterir. Uygulamanız bir nesneyi alır, değişiklik yapar ve geri gönderirse güncellemeyi desteklemeyen bir alana yazıyorsunuz demektir. Alanı ne zaman güncelleyebileceğiniz veya güncelleyip güncelleyemeyeceğinizle ilgili herhangi bir kısıtlama olup olmadığını görmek için alanın referans dokümanlarında açıklamasını kontrol edin.
Nasıl yardım alabilirim?
Sorunu her zaman kendi başınıza tespit edip çözmeniz mümkün olmayabilir. Sorunuz, forumda sorulduğunda aynı sorunla karşılaşmış olabilecek binlerce geliştiricinin önüne çıkarılır.
Sorgularınıza mümkün olduğunca fazla bilgi eklemeye çalışın. Önerilen öğeler şunlardır:
- Sanitize edilmiş JSON isteği ve yanıtı. Geliştirici jetonunuz veya AuthToken gibi hassas bilgileri kaldırdığınızdan emin olun.
- Kod snippet'leri. Dile özgü bir sorun yaşıyorsanız veya API ile çalışırken yardıma ihtiyacınız varsa ne yaptığınızı açıklamaya yardımcı olması için bir kod snippet'i ekleyin.
- RequestId. Bu sayede Google Geliştirici İlişkileri Ekibi üyeleri, üretim ortamına yönelik olarak gönderilen isteğinizi bulabilir. Yanıt hatalarını kapsayan istisnalara özellik olarak eklenen requestId'nin yanı sıra yalnızca requestId'den daha fazla bağlam bilgisini günlüklerinize kaydetmenizi öneririz.
- Çalışma zamanı/yorumlayıcı sürümü ve platform gibi ek bilgiler de sorun giderme sırasında yararlı olabilir.
Sorunu çözme
Sorunu tespit edip bir çözüm buldunuz. Şimdi, değişikliğinizi yapıp düzeltmeyi bir test hesabında (tercih edilir) veya üretim ortamında (hata yalnızca belirli bir üretim hesabındaki veriler için geçerliyse) test etmenin zamanı geldi.
Paylaşımı göz önünde bulundurun
Daha önce forumda görülmemiş bir hatayla ilgili soru yayınladıysanız ve çözümü bulduysanız bunu ileti dizisine ekleyebilirsiniz. Geliştiriciler, aynı sorunu tekrarladığında hemen çözebilir.
Sonraki Adımlar
Bu sorunu çözdüğünüzde, bu sorunun baştan yaşanmaması için kodunuzu iyileştirmenin herhangi bir yolunu fark ettiniz mi?
İyi bir birim testi grubu oluşturmak, kod kalitesini ve güvenilirliğini önemli ölçüde artırmaya yardımcı olur. Ayrıca, önceki işlevleri bozmadıklarından emin olmak için yeni değişiklikleri test etme sürecini hızlandırır. İyi bir hata işleme stratejisi, sorun giderme için gerekli tüm verilerin gösterilmesinde de önemlidir.