اسکریپتهای گوگل ادز از پیشنویسها و آزمایشهای کمپین پشتیبانی میکنند که برای تهیه و آزمایش تغییرات در کمپینهای شبکه جستجو و نمایش استفاده میشوند.
این راهنما، گردش کار اولیه برای کار با پیشنویسها و آزمایشها در یک اسکریپت را توضیح میدهد.
پیشنویسها
پیشنویس ، یک کپی از یک کمپین موجود است که تبلیغات خود را ارائه نمیدهد، اما میتواند برای ایجاد تغییرات مرحلهای بدون تغییر کمپین اصلی مورد استفاده قرار گیرد. سپس میتوان تغییرات مرحلهای را به کمپین پایه اعمال کرد.
ایجاد پیشنویس
یک پیشنویس از یک کمپین پایه موجود با استفاده از DraftBuilder و ارائه یک نام منحصر به فرد ساخته میشود. کمپین پایه باید یک کمپین جستجو، کمپین شبکه جستجو با گسترش نمایش یا کمپین نمایش (به استثنای کمپین اپلیکیشن موبایل برای شبکه نمایش) باشد و نباید بودجه مشترک داشته باشد.
const campaign = AdsApp.campaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get()
.next();
const draftBuilder = campaign.newDraftBuilder()
.withName("INSERT_DRAFT_NAME_HERE")
.build();
const draft = draftBuilder.getResult();
DraftBuilder.build() یک DraftOperation برمیگرداند که یک عملیات معمول در اسکریپتها است. برای جزئیات بیشتر به راهنمای ما در مورد سازندگان مراجعه کنید.
یک draft (draft) به طور منحصر به فرد با ترکیبی از شناسه کمپین پایه و شناسه پیشنویس آن شناسایی میشود. برای اطلاعات بیشتر به DraftSelector.withIds() مراجعه کنید.
تهیه پیش نویس کمپین
یک شیء draft یک کمپین پایه و یک کمپین پیشنویس را به هم مرتبط میکند. برای مرحلهبندی بهروزرسانیهای کمپین پایه، شما تغییرات را از طریق کمپین پیشنویس منتشر میکنید.
یک کمپین پیشنویس، مانند هر کمپین دیگری، روشهایی برای دریافت و تنظیم ویژگیهای مختلف خود مانند معیارها، گروههای تبلیغاتی، پیشنهادات و تبلیغات دارد.
const draftCampaign = draft.getDraftCampaign();
draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");
بررسیهای سیاستهای تبلیغاتی برای یک کمپین پیشنویس درست مانند کمپین پایه انجام میشود. شما نمیتوانید آزمایشی را از یک کمپین پیشنویس که تبلیغات ناقض سیاستها دارد، اجرا کنید.
اجرای پیش نویس
پس از تهیه پیشنویس کمپین، میتوانید یکی از موارد زیر را انجام دهید:
اگر نمیخواهید از تغییرات استفاده کنید، میتوانید پیشنویس را حذف کنید. حذف پیشنویس برگشتناپذیر است، اما همچنان میتوانید آن را در بخش «همه پیشنویسها» در تب پیشنویسها در رابط کاربری گوگل ادز مشاهده کنید.
draft.remove();اگر تصمیم دارید تغییراتی را که در پیشنویس ایجاد کردهاید حفظ کنید، میتوانید آنها را اعمال کنید:
draft.startApplying();این روش فرآیند اعمال بهروزرسانیها به کمپین پایه را آغاز میکند، بنابراین پیشنویس در رابط کاربری گوگل ادز وضعیت « در حال اعمال...» را خواهد داشت. با این حال، این روش پس از اتمام فرآیند به شما اطلاع نمیدهد .
اگر میخواهید ابتدا تغییرات خود را آزمایش کنید، میتوانید از پیشنویس برای ایجاد یک آزمایش استفاده کنید.
آزمایشها
یک آزمایش، یک کمپین قابل تنظیم را به موازات کمپین اصلی اجرا میکند و تبلیغات را به درصد مشخصی از ترافیک نشان میدهد. بر اساس نتایج آزمایش، میتوانید تغییرات را در کمپین اصلی اعمال کنید، آزمایش را به یک کمپین مستقل منشعب کنید یا کمپین آزمایشی را رها کنید.
یک آزمایش ایجاد کنید
یک experiment شبیه به یک پیشنویس است و همچنین از یک کمپین پایه ایجاد میشود. شما یک experiment با ExperimentBuilder ایجاد میکنید. این به طور خودکار یک آزمایش با دو "بازو" ایجاد میکند که نمایانگر بخشهای مختلف آزمایش هستند. یک بازو (به نام بازوی کنترل) شامل کمپین پایه و دیگری (به نام بازوی درمان) شامل یک کمپین پیشنویس جدید خواهد بود که شما آن را (مطابق مراحل پیشنویس که قبلاً نشان داده شده است) قبل از برنامهریزی آزمایش، سفارشی خواهید کرد.
هنگام ساخت یک آزمایش، مطمئن شوید که تمام موارد زیر را در سازنده تنظیم کردهاید:
-
withCampaign - کمپینی که میخواهید آزمایش بر اساس آن انجام شود.
-
withTrafficSplitPercent - چه مقدار از ترافیک به بخش آزمایش اختصاص داده خواهد شد. برای ۵۰٪،
50را مشخص کنید. -
withStartDateوwithEndDate - تاریخ شروع و پایان کمپین را مشخص میکند. با فرمت
YYYYMMddمشخص کنید. -
withType - بسته به شبکهای که استفاده میکنید، میتوانید از
SEARCH_CUSTOMیاDISPLAY_CUSTOMاستفاده کنید. -
withSuffix - پسوندی را مشخص میکند که هنگام ایجاد کمپین درمانی به نام آن اضافه خواهد شد.
-
withGoals - اهداف این آزمایش را مشخص میکند. این فقط یادآوری برای خودتان است که اهداف شما هنگام ایجاد آن چه بوده است. مقدار پیشفرض خوب
[{metric: 'CLICKS', direction: 'INCREASE'}]است.
درصد تقسیم ترافیک تعیین میکند که چه بخشی از ترافیک به جای کمپین پایه، به تبلیغات کمپین آزمایشی نمایش داده خواهد شد. به همین دلیل، هر کمپین پایه میتواند فقط یک آزمایش در حال اجرا در هر زمان داشته باشد.
const experiment = AdsApp.newExperimentBuilder()
.withCampaign(campaign)
.withTrafficSplitPercent(50)
.withStartDate("20230501")
.withEndDate("20230601")
.withType("SEARCH_CUSTOM")
.withSuffix("experiment")
.withGoals([{metric: 'CLICKS', direction: 'INCREASE'}])
.build();
// The experimentCampaign represents the customizeable draft.
const experimentCampaign = experiment.getExperimentCampaign();
برخلاف پیشنویسها، آزمایشها به طور منحصر به فرد با یک شناسه (ID) شناسایی میشوند. برای اطلاعات بیشتر به ExperimentSelector.withIds() مراجعه کنید.
کمپین آزمایشی را ارائه دهید
مشابه draft ، یک experiment به خودی خود یک کمپین نیست. بلکه، کمپین پایه، پیشنویس و کمپین آزمایش را به هم مرتبط میکند. فیلدهای یک کمپین آزمایش قابل تغییر هستند، به جز موارد استثنای زیر:
- نام
- وضعیت
- تاریخ شروع
- تاریخ پایان
- بودجه
const experimentCampaign = experiment.getExperimentCampaign();
// Will succeed.
experimentCampaign.setAdRotationType("ROTATE_FOREVER");
experimentCampaign.createNegativeKeyword("sneakers");
// Will fail.
experimentCampaign.setName("INSERT_EXPERIMENT_NAME_HERE");
میتوان تغییراتی در نام، تاریخ شروع و تاریخ پایان آزمایش ایجاد کرد که پس از آن، این تغییرات به کل کمپین آزمایش اعمال خواهند شد.
// Will succeed.
experiment.setName("INSERT_EXPERIMENT_NAME_HERE");
// Will succeed if date is acceptable.
const date = "20220601";
experiment.setStartDate(date);
برای شروع آزمایش، تابع experiment.startScheduling() را فراخوانی کنید. این یک فرآیند ناهمزمان است، زیرا باید تمام تنظیمات را از کمپین پایه کپی کند.
پس از پایان آزمایش
پس از اتمام آزمایش، چند گزینه پیش رو دارید. توصیه میکنیم اجازه دهید آزمایش کاملاً تمام شود تا نمایش تبلیغات متوقف شود، اما همچنان بتوانید با آن تعامل داشته باشید. یک آزمایش تکمیلشده همچنان میتواند حذف، اعمال یا تکمیل شود و آمار عملکرد کمپین آن همچنان قابل دسترسی است.
experiment.finish();
const stats = experimentCampaign.getStatsFor("INSERT_TIME_PERIOD_HERE");
اگر بر اساس آمار از آزمایش ناراضی هستید، میتوانید آن را حذف کنید که این کار باعث حذف کمپین آزمایشی نیز میشود. حذف آزمایش برگشتناپذیر است، اما همچنان میتوانید آن را در بخش «همه آزمایشها» در تب آزمایشها در رابط کاربری گوگل ادز مشاهده کنید.
experiment.remove();اگر از نتایج آزمایش راضی هستید، دو گزینه دارید:
میتوانید شروع به اعمال تغییرات کنید و درست مانند پیشنویسها، وقتی فرآیند تکمیل شد، به شما اطلاع داده نخواهد شد.
experiment.startApplying();شما میتوانید کمپین آزمایشی را به عنوان یک کمپین مستقل و کاملاً عملیاتی، بدون تأثیر بر کمپین پایه، راهاندازی کنید. این فرآیند که به عنوان فارغالتحصیلی شناخته میشود، بلافاصله تکمیل میشود و نیاز به تعیین بودجه جدید دارد.
const budget = AdsApp.budgets() .withCondition(`campaign_budget.id = ${budgetId}`) .get() .next(); experiment.graduate(budget);کمپین جدید دیگر نمیتواند بودجهای را با کمپین پایه به اشتراک بگذارد، که این امر مستلزم بودجه جدیدی است. کمپینهای تدریجی درست مانند کمپینهای معمولی هستند، به این معنی که تمام فیلدهای آنها قابل تغییر است و میتوانند به عنوان یک کمپین پایه برای پیشنویسها و آزمایشهای بیشتر عمل کنند.
ملاحظات دیگر
موجودیتهای پایه
معرفی پیشنویسها و آزمایشها به اسکریپتهای گوگل ادز، مفهوم موجودیتهای پایه را نیز معرفی میکند. کمپینهای پیشنویس و آزمایش و گروههای تبلیغاتی موجود در آنها از کمپینهای پایه اصلی خود متمایز هستند، به همین دلیل است که Campaign و AdGroup اکنون روشهایی برای دسترسی به کمپین پایه و گروه تبلیغاتی خود دارند: getBaseCampaign() و getBaseAdGroup() .
این متدها در صورت فراخوانی توسط یک کمپین یا گروه تبلیغاتی پایه، موجودیت فراخوانی شده را برمیگردانند. موجودیتهای درون کمپینها و گروههای تبلیغاتی، مانند کلمات کلیدی و تبلیغات، نیز دارای چنین متدهایی هستند.
برای کمک به پیگیری موجودیتهای پایه، به کمپینها متدهای isBaseCampaign() ، isDraftCampaign() و isExperimentCampaign() داده شده است.
متدهای جدید Campaign.draftCampaigns() و Campaign.experimentCampaigns() به شما امکان میدهند به تمام کمپینهای پیشنویس و آزمایشی که کمپین فراخوان را به عنوان کمپین پایه خود دارند، دسترسی داشته باشید. با این حال، نمیتوانید کمپینهای پیشنویس را با CampaignSelector.withCondition() انتخاب کنید؛ در عوض AdsApp.drafts() استفاده کنید.
مدیریت خطا
روشهای زیر که شامل پیشنویسها و آزمایشها میشوند، هنگام اجرای اسکریپت ادامه مییابند، اما ممکن است به صورت ناهمگام با شکست مواجه شوند:
-
Draft.startApplying() -
Experiment.startApplying() -
Experiment.startScheduling()
شما باید منتظر بمانید تا بررسی کنید که آیا این عملیاتها موفقیتآمیز بودهاند یا خیر. رابط کاربری گوگل ادز پس از اتمام موفقیتآمیز startApplying() و startScheduling() به ترتیب وضعیتهای Applied یا Active را نشان میدهد. و در صورت عدم موفقیت، وضعیتهای Unable to apply یا Unable to create را نشان میدهد و به شما امکان میدهد برای مشاهده خطاها کلیک کنید.
همچنین ممکن است برخی از روشها در مرحله پیشنمایش شکست بخورند، اما پس از اجرا موفق شوند؛ برای مثال، پس از ایجاد یک پیشنویس:
const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.
این در حالت پیشنمایش ناموفق خواهد بود زیرا نمیتواند فوراً به کمپین پیشنویس دسترسی پیدا کند.
به طور مشابه، ایجاد یک آزمایش و تلاش فوری برای دریافت کمپین پیشنویس آن، در حالت پیشنمایش با شکست مواجه خواهد شد، زیرا پیشنویس در واقع ایجاد نشده است.
به همین دلیل، پس از اجرای اسکریپتها، گزارشهای زیر لیست آنها را بررسی کنید و تنها در صورتی که معتقدید علت، محدودیتهای حالت پیشنمایش است، با اسکریپتی که در پیشنمایش با شکست مواجه شده است، ادامه دهید.