טיוטות של קמפיינים וניסויים בקמפיינים

הסקריפטים של Google Ads תומכים בטיוטות של קמפיינים וניסויים בקמפיינים, המשמשים להכנה ולבדיקת שינויים בקמפיינים לרשת החיפוש ולרשת המדיה.

טיוטה היא שכפול של קמפיין קיים שלא יציג מודעות משלו, אבל ניתן להשתמש בו כדי לשלב שינויים בלי לשנות את הקמפיין המקורי. לאחר מכן אפשר להחיל את השינויים המדורגים על קמפיין הבסיס.

ניסוי מפעיל קמפיין שניתן להתאים אישית במקביל לקמפיין המקורי, ומציג מודעות לאחוז מסוים מהתנועה. על סמך תוצאות הניסוי, אפשר להחיל את השינויים בקמפיין המקורי, לחלק את הניסוי לקמפיין עצמאי או לנטוש את הקמפיין של הניסוי.

במדריך הזה מוסבר על תהליך העבודה הבסיסי לעבודה עם טיוטות וניסויים בסקריפט.

טיוטות

יצירת טיוטה

טיוטה נוצרת מקמפיין בסיס קיים באמצעות 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, פעולה אופיינית בסקריפטים. פרטים נוספים זמינים במדריך ל-builders

draft מזוהה באופן ייחודי באמצעות השילוב של מזהה הקמפיין הבסיסי ומזהה הטיוטה. למידע נוסף, ראו DraftSelector.withIds().

הקצאה של טיוטת הקמפיין

אובייקט draft מתייחס לקמפיין בסיס ולטיוטה של קמפיין. כדי לבצע עדכונים בקמפיין הבסיס, מפיצים את השינויים דרך טיוטת הקמפיין.

כמו כל קמפיין אחר, טיוטת הקמפיין כוללת שיטות שונות להגדרה ולהגדרה של המאפיינים השונים, כמו קריטריונים, קבוצות של מודעות, הצעות מחיר ומודעות.

const draftCampaign = draft.getDraftCampaign();

draftCampaign.setAdRotationType("CONVERSION_OPTIMIZE");
draftCampaign.createNegativeKeyword("shoes");

חשוב לזכור שבדיקות מדיניות המודעות מתבצעות עבור טיוטה של קמפיין בדיוק כמו עבור קמפיין הבסיס. לא ניתן יהיה להפעיל ניסוי מטיוטה של קמפיין שמכיל מודעות שמפירות את המדיניות.

הפעלת הטיוטה

אחרי שמקצים את טיוטת הקמפיין, אפשר לבצע אחת מהפעולות הבאות:

  1. אם אתם לא רוצים להשתמש בשינויים, תוכלו פשוט להסיר את הטיוטה. הסרת הטיוטה היא פעולה בלתי הפיכה, אבל עדיין אפשר לראות אותה בקטע כל הטיוטות בכרטיסיית הטיוטות בממשק המשתמש של Google Ads.

    draft.remove();
    
  2. אם תחליטו לשמור את השינויים שביצעתם בטיוטה, תוכלו להחיל אותם:

    draft.startApplying();
    

    בשיטה הזו מתחילים את תהליך החלת העדכונים על קמפיין הבסיס, ולכן הסטטוס של הטיוטה יהיה Applying... בממשק המשתמש של Google Ads. עם זאת, השיטה לא תודיע לכם כשהתהליך יסתיים.

  3. אם אתם רוצים לבדוק קודם את השינויים, תוכלו להשתמש בטיוטה כדי ליצור ניסוי.

ניסויים

יצירת ניסוי

השדה experiment דומה לטיוטה, והוא נוצר גם מקמפיין בסיס. יוצרים experiment באמצעות ExperimentBuilder. הפעולה הזו תיצור באופן אוטומטי ניסוי עם שתי 'זרועות' שמייצגות את החלקים השונים של הניסוי. יד אחת (שנקראת זרוע הבקרה) תכיל את קמפיין הבסיס, והשנייה (שנקראת זרוע הניסוי) תכיל טיוטת קמפיין חדשה שתוכלו להתאים אישית לפי השלבים בטיוטה שלמעלה לפני תזמון הניסוי.

כשיוצרים ניסוי, חשוב להגדיר ב-builder את כל ההגדרות הבאות:

withCampaign
הקמפיין שעליו רוצים להתבסס על הניסוי.
withTrafficSplitPercent
איזה חלק מהתנועה יעבור לזרוע הניסוי. כדי לציין 50%, יש לציין 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();

בניגוד לטיוטות, ניסויים מזוהים באופן ייחודי באמצעות מזהה יחיד. למידע נוסף, ראו ExperimentSelector.withIds().

הקצאת קמפיין הניסוי

בדומה ל-draft, experiment עצמו אינו קמפיין. אלא בין קמפיין הבסיס, הטיוטה וקמפיין הניסוי. אפשר לשנות את השדות בקמפיין ניסיוני, מלבד במקרים הבאים:

  • name
  • status
  • תאריך התחלה
  • תאריך סיום
  • תקציב
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");
  • אם אתם לא מרוצים מהניסוי על סמך הנתונים הסטטיסטיים, תוכלו להסיר את הניסוי ובכך להסיר גם את קמפיין הניסוי. לא ניתן לבטל את הסרת הניסוי, אבל עדיין אפשר להציג אותו בקטע כל הניסויים בכרטיסייה 'ניסויים' בממשק המשתמש של Google Ads.

    experiment.remove();
    
  • אם מרוצים מתוצאות הניסוי, יש לכם שתי אפשרויות:

    1. אפשר להתחיל להחיל את השינויים, ובדיוק כמו בטיוטות, לא תקבלו הודעה כשהתהליך יסתיים.

      experiment.startApplying();
      
    2. אפשר ליצור קמפיין לניסוי כקמפיין עצמאי שמתנהל באופן מלא, בלי להשפיע על קמפיין הבסיס. התהליך הזה, שנקרא סיום לימודים, מסתיים מיד וצריך להגדיר לו תקציב חדש.

      const budget = AdsApp.budgets()
          .withCondition(`campaign_budget.id = ${budgetId}`)
          .get()
          .next();
      
      experiment.graduate(budget);
      

      הקמפיין החדש לא יכול יותר לשתף תקציב עם קמפיין הבסיס, ולכן נדרש תקציב חדש. קמפיינים מדורגים הם בדיוק כמו קמפיינים רגילים, בכך שכל השדות שלהם ניתנים לשינוי, ושהם יכולים לשמש כקמפיין בסיס ליותר טיוטות וניסויים.

שיקולים נוספים

ישויות בסיס

ההשקה של טיוטות וניסויים לסקריפטים של Google Ads מציגה גם את המונח 'ישויות בסיסיות'. קמפיינים של טיוטות וקמפיינים לניסוי וקבוצות המודעות בהם שונים מהקמפיינים הבסיסיים המקוריים שלהם, ולכן ל-Campaign ול-AdGroup יש עכשיו שיטות לגשת לקמפיין הבסיס ולקבוצת המודעות: getBaseCampaign() ו-getBaseAdGroup().

השיטות האלה מחזירות את הישות ששלחה קריאה על ידי קמפיין בסיס או קבוצת מודעות. גם לישויות בקמפיינים ובקבוצות של מודעות, כמו מילות מפתח ומודעות, ניתנו שיטות כאלה.

כדי לעקוב אחרי ישויות הבסיס, הקמפיינים קיבלו את השיטות isBaseCampaign(), isDraftCampaign() ו-isExperimentCampaign().

בעזרת השיטות החדשות Campaign.draftCampaigns() ו-Campaign.experimentCampaigns() תוכלו לגשת לכל הקמפיינים של הניסויים והטיוטות שכוללים את קמפיין הבסיס. עם זאת, אי אפשר לבחור טיוטות של קמפיינים עם CampaignSelector.withCondition(). במקום זאת, צריך להשתמש ב-AdsApp.drafts().

טיפול בשגיאות

השיטות הבאות שכוללות טיוטות וניסויים ממשיכות כשהסקריפט ירוץ, אבל יכול להיות שייכשלו באופן אסינכרוני:

  • Draft.startApplying()
  • Experiment.startApplying()
  • Experiment.startScheduling()

מומלץ להמתין ולבדוק אם הפעולות האלה מצליחות. בממשק המשתמש של Google Ads מוצגים הסטטוסים applied או Active אחרי שהושלמו בהצלחה startApplying() ו-startScheduling(), בהתאמה. בנוסף, מופיע הכיתוב לא ניתן ליישם או לא ניתן ליצור במקרה של כשל, ואתם יכולים ללחוץ כדי לראות את השגיאות.

בנוסף, ייתכן שחלק מהשיטות נכשלות בשלב התצוגה המקדימה, אבל מצליחות אחרי שהן מריצים, למשל, אחרי שיוצרים טיוטה:

const draftCampaign = draft.getDraftCampaign();
draftCampaign.createNegativeKeyword("shoes"); // Will fail in preview.

הפעולה הזו תיכשל במצב תצוגה מקדימה כי היא לא יכולה לגשת לטיוטת הקמפיין באופן מיידי.

באופן דומה, יצירת ניסוי וניסיון מיידי לאחזר את טיוטת הקמפיין שלו ייכשלו במצב תצוגה מקדימה, מכיוון שהטיוטה לא נוצרה בפועל.

לכן, חשוב לבדוק את היומנים שמתחת לרשימת הסקריפטים אחרי שמפעילים אותם, ולהמשיך עם סקריפט שנכשל בתצוגה מקדימה רק אם לדעתכם הסיבה לכך נובעת ממגבלות במצב התצוגה המקדימה.