סקריפטים של 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 יוצרת באופן אוטומטי. סקירה מלאה של סוגי הנכסים הנדרשים זמינה במדריך הנכסים של 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
.
לבסוף, מאחזרים את האובייקט iterator ומבצעים איטרציה כמו עם ישויות אחרות:
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);