Google Ads komut dosyaları, Google Ads API'de bulunan genel mutasyonlar için destek sunar. GoogleAdsService.mutate
üzerinden gerçekleştirilebilen çoğu işlem (ör. kampanya oluşturma ve yönetme) Google Ads komut dosyalarında da gerçekleştirilebilir.
Bu özellik, Google Ads API'nin büyük bir bölümüne erişime izin verdiğinden bu özelliği kullanmak için Google Ads API kuralları hakkında temel bilgilere sahip olmanız önemlidir. Geliştirici jetonları ve yetkilendirme gibi birçok yön atlanabilir. Bunlar Google Ads komut dosyaları tarafından sizin için işlenir ancak geçerli bir mutate isteği oluşturmanız gerekir.
Bu kılavuza devam etmeden önce Google Ads API REST arayüzüyle ilgili bilmeniz gereken bazı temel kaynakları aşağıda bulabilirsiniz:
Temel örnek
İşlevselliği göstermek için kampanya bütçesi oluşturan şu temel örneği inceleyin:
const budgetResult = AdsApp.mutate({
campaignBudgetOperation: {
create: {
amountMicros: 10000000,
explicitlyShared: false
}
}
});
AdsApp.mutate
çağrısı, tek bir
MutateOperation
öğesini temsil eden bir JSON nesnesi alır. Bu nesnede, gerçekleştirdiğiniz işlem türünü (bu örnekte campaignBudgetOperation
) belirtirsiniz. Ardından create
, remove
veya hem update
hem de updateMask
değerini belirtirsiniz. create
ve update
içindeki belirli alanlar, üzerinde çalıştığınız kaynak türüne bağlıdır.
İşlem oluşturma
Geçerli bir işlem oluşturmak için kullanabileceğiniz birkaç strateji vardır. Kampanya bütçesi örneğine bağlı kalarak, geçerli tüm alanların listesini görmek için kampanya bütçesiyle ilgili REST referans belgelerine bakabilir, ardından uygun alanları doldurabilir veya uygun bir nesne oluşturmak için komut dosyanızda özel JavaScript kodu yazabilirsiniz.
Alternatif olarak, "Kampanya bütçesi için bunu deneyin" özelliğini kullanarak işlemi dinamik olarak oluşturmayı deneyebilirsiniz. Bu özellik, eklemek istediğiniz alanları seçerek istek gövdesini dinamik olarak oluşturmanıza olanak tanır. Ardından, oluşturulan sonuçtan işlemin içeriğini çıkarabilir ve işlem türünü belirttikten sonra mutate
çağrınıza ekleyebilirsiniz.
İşlem türleri
Oluştur
İşleminizde create
değerini belirtin ve oluşturmak istediğiniz kaynağın nesne gösterimini iletin.
create
işlemiyle ilgili bir örnek için yukarıya bakın.
Kaldır
İşleminizde remove
belirtin. Kaldırmak istediğiniz kaynağın kaynak adını iletin. Örneğin:
AdsApp.mutate({
adGroupOperation: {
remove: "customers/[CUSTOMER_ID]/adGroups/[AD_GROUP_ID]"
}
});
Bir öğenin kaynak adını bilmiyorsanız Adsapp.search
isteği kullanarak bu adı getirebilirsiniz.
Güncelle
İşleminizde update
değerini belirtin. Böylece sistem, hangi nesneyi güncellemek istediğinizi belirleyebilir. Ayrıca, değerlerini güncellemek istediğiniz alanları doldurun ve bu istekte tam olarak hangi alanları değiştirmeyi planladığınızı belirten bir updateMask
belirtin. Kaynak adını güncelleme maskesine eklemeyin.
update
işlemi örneği:
const campaignResult = AdsApp.mutate({
campaignOperation: {
update: {
resourceName: "customers/[CUSTOMER_ID]/campaigns/[CAMPAIGN_ID]",
status: "PAUSED",
name: "[Paused] My campaign"
},
updateMask: "name,status"
}
});
Sonuçları işleme
İşlem türünden bağımsız olarak, dönüş değeri MutateResult
olur.
Döndürülen kaynak adını, mutasyondan sonra kaynağın mevcut durumunu sorgulamak ve işlemin başarılı olup olmadığını ya da varsa hangi hataların oluştuğunu kontrol etmek için kullanabilirsiniz.
Aşağıda, bir sonucu kontrol etme ve günlüklerde bazı bilgileri yazdırma ile ilgili temel akışı gösteren bir örnek verilmiştir:
const result = AdsApp.mutate( ... );
if (result.isSuccessful()) {
console.log(`Resource ${result.getResourceName()} successfully mutated.`);
} else {
console.log("Errors encountered:");
for (const error of result.getErrorMessages()) {
console.log(error);
}
}
Birden çok işlem
Google Ads komut dosyaları, AdsApp.mutateAll
yöntemiyle tek bir istekte birden fazla işlemi değiştirme özelliğini de destekler. Tek bir istekte tam kampanya hiyerarşisi gibi birbirine bağlı öğeler oluşturabilirsiniz. İsteğe bağlı olarak, tüm işlemlerin atomik olmasını sağlayabilirsiniz. Bu durumda, işlemlerden herhangi biri başarısız olursa hiçbiri gerçekleştirilmez.
Döndürülen değer, sağladığınız her işlem için bir tane olmak üzere MutateResult
nesnelerinden oluşan bir dizidir ve ilk işlemlerle aynı sıradadır.
Bu özellik, Google Ads API özelliğiyle aynı şekilde çalışır. Bu nedenle, geçici kimlikler ve diğer hususlarla ilgili ayrıntılı açıklama için Google Ads API ile ilgili en iyi uygulamalar kılavuzuna bakın. Kılavuzda alan adlarını belirtmek için snake_case
karakterinin, Google Ads komut dosyaları belgelerinde ise lowerCamelCase
karakterinin kullanıldığını unutmayın. Bu iki durum da Google Ads komut dosyalarında kabul edilir. Bu nedenle, kodu doğrudan bu kılavuzdan kopyalayabilirsiniz.
Tek bir istekte birden fazla işlem yapmak için tüm işlemlerinizi bir dizide toplayın ve ardından AdsApp.mutateAll
işlevini çağırın. mutateAll
çağrısı, işlemler dizisini ilk bağımsız değişken ve aşağıdakiler de dahil olmak üzere seçeneklerin isteğe bağlı ikinci bağımsız değişkeni olarak alır:
apiVersion
: Komut dosyalarının varsayılan sürümü dışında bir sürüm kullanmak istersenizV21
gibi özel bir API sürümü belirtebilirsiniz. O sırada herkese açık olarak sunulan herhangi bir sürümü kullanabilirsiniz.partialFailure
: Bu alanın varsayılan değeritrue
'dir.true
olarak ayarlanırsa geçerli işlemler gerçekleştirilir ve başarısız işlemler hata döndürür.false
olarak ayarlanırsa herhangi bir işlem başarısız olduğunda hiçbir işlem gerçekleştirilmez. Bu da işlem grubunu etkili bir şekilde atomik hale getirir.
Aşağıda, atomik bir istekte kampanya bütçesi, kampanya ve reklam grubu oluşturan birden fazla işlemin yer aldığı bir örnek verilmiştir.
const operations = [];
const customerId = 'INSERT_CUSTOMER_ID_HERE';
const budgetId = `customers/${customerId}/campaignBudgets/-1`;
const campaignId = `customers/${customerId}/campaigns/-2`;
operations.push({
campaignBudgetOperation: {
create: {
resourceName: budgetId,
amountMicros: 10000000,
explicitlyShared: false
}
}
});
operations.push({
campaignOperation: {
create: {
resourceName: campaignId,
name: 'New Campaign ' + new Date(),
advertisingChannelType: 'SEARCH',
manualCpc: {},
campaignBudget: budgetId,
advertisingChannelType: 'DISPLAY',
networkSettings: {
targetContentNetwork: true
}
}
}
});
operations.push({
adGroupOperation: {
create: {
campaign: campaignId,
name: 'New AdGroup ' + new Date(),
optimizedTargetingEnabled: true
}
}
});
const results = AdsApp.mutateAll(
operations, {partialFailure: false});