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

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

  • שם
  • 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.

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

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

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