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

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

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

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

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

טיוטות

יצירת טיוטה

כדי ליצור טיוטה מקמפיין בסיס קיים, משתמשים בפקודה 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() מחזירה את הערך a ‫DraftOperation, פעולה אופיינית ב-Scripts. לפרטים נוספים, אפשר לעיין במדריך שלנו ליוצרים.

קמפיין טיוטה 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.

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

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

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