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

סקריפטים של 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.

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

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

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