کمپین های حداکثر عملکرد با استفاده از AdsApp

اسکریپت‌های Google Ads برای مدیریت کمپین‌های حداکثر عملکرد شما فراهم می‌کنند. می توانید از اسکریپت ها برای بازیابی کمپین های Performance Max، مدیریت گروه های دارایی و اجرای گزارش ها استفاده کنید. با این حال، نمی توانید از اسکریپت ها برای ایجاد کمپین های Performance Max استفاده کنید. برای انجام عملیات پیشرفته تر، به ادامه این راهنما مراجعه کنید، که رویکرد عمومی تری را با استفاده از mutate نشان می دهد.

بازیابی کمپین های Performance Max

کمپین‌های حداکثر عملکرد از طریق مجموعه performanceMaxCampaigns یک شی AdsApp در دسترس هستند. شما می توانید آنها را به طور معمول بازیابی کنید:

const campaignName = "My Performance Max campaign";

const campaignIterator = AdsApp.performanceMaxCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

برخلاف برخی دیگر از انواع کمپین، کمپین های Performance Max گروه های تبلیغاتی یا اشیاء تبلیغاتی ندارند که بتوانید آنها را ببینید. همه چیز مربوط به این مفاهیم برای کمپین های دیگر به طور خودکار برای شما بر اساس گروه های دارایی که تنظیم کرده اید، مدیریت می شود.

دارایی ها و گروه های دارایی

آگهی‌های کمپین‌های Performance Max دارای دارایی‌هایی مانند ویدیوها، تصاویر، سرفصل‌ها و توضیحات هستند که توسط شما ارائه می‌شوند یا به‌طور خودکار تولید می‌شوند. برای یک نمای کلی از انواع دارایی های مورد نیاز، راهنمای دارایی حداکثر عملکرد API Google Ads را ببینید.

دارایی‌های کمپین‌های حداکثر عملکرد با هم در یک گروه دارایی دسته‌بندی می‌شوند و هر کمپین حداکثر عملکرد باید حداقل یک گروه دارایی داشته باشد. شما نمی توانید این گروه های دارایی را مستقیماً در اسکریپت ها ایجاد کنید، اما می توانید دارایی ها را از یک گروه دارایی موجود اضافه و حذف کنید.

افزودن دارایی به گروه دارایی

ابتدا دارایی را ایجاد کنید:

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);