پویش‌های «عملکرد بیشینه» بااستفاده از AdsApp

بهترین روش برای مدیریت پویش‌های «عملکرد بیشینه» با دستورگان Google Ads استفاده از استراتژی تغییر برای ارائه مدیریت مستقیم پویش‌های «عملکرد بیشینه» است. پویش‌های «بیشینه‌سازی عملکرد» را فقط می‌توان با تابع mutate ایجاد کرد. بااین‌حال، اگر ترجیح می‌دهید، می‌توانید از اشیاء AdsApp دیگر نیز برای بازیابی پویش‌های «عملکرد بیشینه»، مدیریت گروه‌های دارایی، و اجرای گزارش‌ها استفاده کنید.

بازیابی پویش‌های «عملکرد بیشینه»

پویش‌های «عملکرد بیشینه» ازطریق مجموعه 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 Performance Max را ببینید.

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

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

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

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 را در گروه دارایی فراخوانی کنید تا دارایی را از گروه دارایی بردارید:

// This example assumes at least one asset is returned. We'll remove the first
// asset, whatever it is. In your code, customize this to choose the right
// asset to be removed.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);