סקריפטים של Google Ads מאפשרים לנהל חלק מהקמפיינים למיקסום הביצועים. אפשר להשתמש בסקריפטים כדי לאחזר קמפיינים למיקסום הביצועים, לנהל קבוצות נכסים ולהריץ דוחות. עם זאת, אי אפשר להשתמש בסקריפטים כדי ליצור קמפיינים למיקסום הביצועים. כדי לבצע פעולות מתקדמות יותר, כדאי לקרוא את שאר המדריך, שבו מוסבר על גישה גנרית יותר באמצעות mutate
.
אחזור של קמפיינים למיקסום הביצועים
קמפיינים למיקסום הביצועים זמינים דרך האוסף performanceMaxCampaigns
של אובייקט AdsApp
. אפשר לאחזר אותם כרגיל:
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
בניגוד לסוגים מסוימים של קמפיינים, בקמפיינים למיקסום הביצועים אין קבוצות של מודעות או אובייקטים של מודעות שאפשר לראות. כל מה שקשור למושגים האלה בקמפיינים אחרים מטופל באופן אוטומטי על סמך קבוצות הנכסים שהגדרתם.
נכסים וקבוצות נכסים
מודעות מקמפיינים למיקסום הביצועים מוצגות על סמך נכסים כמו סרטונים, תמונות, כותרות ותיאורים – נכסים שאתם מספקים או נכסים שנוצרים באופן אוטומטי. במדריך בנושא נכסים בקמפיינים למיקסום הביצועים ב-Google Ads API מפורטת רשימה מלאה של סוגי הנכסים הנדרשים.
הנכסים בקמפיינים למיקסום הביצועים מקובצים יחד בקבוצת נכסים, וכל קמפיין למיקסום הביצועים חייב לכלול לפחות קבוצת נכסים אחת. אי אפשר ליצור את קבוצות הנכסים האלה ישירות בסקריפטים, אבל אפשר להוסיף ולהסיר נכסים מקבוצת נכסים קיימת.
הוספת נכס לקבוצת נכסים
קודם כל יוצרים את הנכס:
const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
.withName("new asset name")
.withData(imageBlob)
.build();
const imageAsset = assetOperation.getResult();
לאחר מכן, מוסיפים את הנכס שיצרתם לקבוצת נכסים קיימת:
// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = '${campaignName}'`)
.get();
let campaign;
if (campaignIterator.hasNext()) {
campaign = campaignIterator.next();
} else {
throw `No campaign found with name ${campaignName}.`
}
// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();
// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();
// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');
שימו לב שצריך לציין את סוג הנכס בשלב האחרון. רשימה מלאה של סוגי הנכסים מופיעה במסמכי העזרה של Google Ads API.
כדי להשתמש בנכס קיים, קודם צריך ליצור בורר נכסים:
const assetSelector = AdsApp.adAssets().assets();
לאחר מכן, משתמשים בפילטר withCondition
כדי לצמצם את הרשימה לנכסים שרוצים לבצע בהם פעולות. רשימה מלאה של אפשרויות המסננים מופיעה במאמרי העזרה של AssetSelector
.
לבסוף, מאחזרים את המאיץ ומבצעים איטרציה כמו עם ישויות אחרות:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
נכסי טקסט
נכסי טקסט פועלים בצורה שונה במקצת, כי אין צורך ליצור את הנכס מראש. פשוט מציינים את הטקסט במקום נכס, והמערכת תיצור את הנכס בשבילכם באופן אוטומטי. אם הטקסט הוא כפילות מדויקת של נכס טקסט קיים, המערכת תשתמש בנכס הקיים מחדש.
לדוגמה, כך יוצרים נכס כותרת:
assetGroup.addAsset('asset text here', 'HEADLINE');
הסרת נכס מקבוצת נכסים
אפשר גם להסיר נכס מקבוצת נכסים. עם זאת, חשוב לזכור שצריך מספר מינימלי של סוגים מסוימים של נכסים כדי שהקמפיין יהיה תקף.
כך מסירים את הנכס שנוסף בדוגמה הקודמת:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
אפשר גם לקבל רשימה של נכסים בקבוצת נכסים נתונה באמצעות הפונקציה search
:
// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
`SELECT asset.resource_name, asset_group_asset.field_type
FROM asset_group_asset
WHERE asset_group.resource_name = '${assetGroupName}'`
);
כך שם המשאב של הנכס נבחר כמזהה הייחודי שלו. אפשר לבחור גם שדות אחרים, כמו asset.type
או asset.text_asset.text
, כדי לצמצם עוד יותר את התוצאות. אפשר להשתמש בכלי ליצירת שאילתות לדוח הזה כדי ליצור שאילתות משלכם.
אחרי שמוצאים את נכס היעד, צריך להפעיל את הפונקציה remove
בקבוצת הנכסים כדי להסיר את הנכס מקבוצת הנכסים:
// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);