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

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

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

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

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

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

const draftCampaign = draft.getDraftCampaign();

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

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

הפעלת הטיוטה

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

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

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

        draft.startApplying();
    

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

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

ניסויים

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

יצירת ניסוי

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

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

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 מוצגים הסטטוסים הוחל או פעיל אחרי השלמה מוצלחת של startApplying() ושל startScheduling(), בהתאמה. במקרה של כשל, מוצגות ההודעות Unable to apply או Unable to create, ואפשר ללחוץ כדי לראות את השגיאות.

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

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

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

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

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