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

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

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

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

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

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

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