ChatGPT Sites: המדריך המלא - אתר חי שעובד מהרגע הראשון, ישר מתוך שיחה

ChatGPT Sites בונה אתר או אפליקציית ווב מתוך שיחה, מארח אותו בכתובת משלו ומשאיר לכם את ההחלטה מי נכנס: רק אתם, אנשים שהזמנתם לפי מייל, או כל אחד ברשת. המדריך מלווה את כל הדרך עם עסק הדגמה, סטודיו לסדנאות קפה בשם "פול פנימי": תכנון בצ׳אט רגיל, פרומפט שבונה דף נחיתה בעברית עם טופס הרשמה, עריכה, פרסום, ניהול האתר אחרי שהוא באוויר וחיבור שרושם כל נרשם בגיליון Google Sheets ושולח שני מיילים. האתר שנבנה חי ברשת: pol-pnimi-coffee.
Link access
Just me
שומרים לכם מקום
נועה כהן 050-1234567 סדנת טעימות שלחוהרשמות - פול פנימי
- פרומפט אחד בונה אתר
- סגור עד שמחליטים אחרת
- ציבורי והביקורים נספרים
- כל הרשמה לגיליון ולמייל
מה בונים עם Sites
דף נחיתה הוא הצורה הפשוטה. במרכז העזרה של OpenAI הדוגמאות הראשונות הן דאשבורדים, מעקבי פרויקטים, לוחות השקה, אבות טיפוס, פורטלים פנימיים ודוחות. כל אתר יכול לשמור נתונים בין ביקורים. אלה המשפחות העיקריות:
- אתרים ודפי נחיתהדף נחיתה, אתר תדמית או חנות תצוגה. מי שיש לו דומיין יכול לחבר אותו לאתר.
- דאשבורדים ודוחותנתונים ומדדים בדף שמתעדכן, במקום מצגת שנשלחת במייל.
- כלים פנימיים לצוותבקשות עבודה, קליטת עובדים, ספריית הדרכה. בחשבון עבודה אפשר לפתוח אתר רק לאנשי הארגון.
- אפליקציות שזוכרותמעקבים, הצבעות, רשימות וטבלאות שיאים. כשצריך שהמידע יישמר בין ביקורים, מבקשים את זה בפרומפט.
- ממשקים פרטייםמסלול לטיול או מדריך אישי לסוף השבוע, שנשארים פתוחים רק לכם.
- משחקים ואבות טיפוסרעיון שהופך לקישור עובד לפני שמשקיעים בפיתוח אמיתי.
בתיעוד של Sites יש הפניה לגלריית Showcase של אתרים ואפליקציות שנבנו ופורסמו, יחד עם הפרומפטים שיצרו אותם. ומי שרוצה למכור דרך האתר יכול, כל עוד התשלום עובר דרך ספק סליקה חיצוני. את ההזמנות, המשלוחים וההחזרים מנהל בעל האתר.
שני מסמכים, שני ניסוחים
בעמוד התיעוד הטכני של Sites כתוב שאסור להשתמש בו לעסקאות כספיות. בתנאי השימוש של Sites ובמאמר העזרה מופיע חריג: מכירה מותרת דרך ספק סליקה חיצוני. תנאי השימוש הם המסמך המחייב. בכל מקרה פרטי כרטיס אשראי לא עוברים דרך האתר עצמו.
למי זה זמין ומה זה עולה
Sites בבטא ציבורית ל-Plus, ל-Pro ולחשבונות עבודה של Business, Enterprise ו-Edu. בתוכנית החינמית וב-Go הוא לא זמין. בונים אותו ב-Work באתר של ChatGPT, או ב-Work וב-Codex באפליקציית המחשב. באפליקציה הקלאסית של ChatGPT אין Sites. ב-Business הוא פעיל כברירת מחדל. ב-Enterprise מנהל צריך להפעיל אותו ופרסום לכל הרשת כבוי שם עד שמנהל מאשר.
יש שתי מכסות שכדאי להכיר. הראשונה היא המכסה של Work ו-Codex: הבנייה והעריכה הן משימות Work ולכן נספרות בה ולא במכסת הצ׳אט. ב-Plus וב-Pro אפשר לקנות קרדיטים כשהיא נגמרת. יש באתר מדריך מלא על ChatGPT Work עם כל הפרטים. השנייה שייכת ל-Sites עצמו: בזמן הבטא לכל תוכנית יש מגבלות שימוש משותפות לכל האתרים. ChatGPT מתריע כשמתקרבים אליהן. מי שמגיע למגבלה עלול לא להצליח ליצור אתר חדש, להוסיף אחסון או להשאיר ציבורי אתר עם הרבה תנועה ועדיין יוכל לערוך ולנהל את האתרים שכבר יש לו.
OpenAI כותבת שהזמינות משתנה לפי תוכנית ואזור. בישראל הוא זמין. בכניסה הראשונה נפתח חלון עם תנאים נוספים: אתם אחראים לאתר ולכל מה שמבקרים שולחים דרכו, מי שאוסף מידע אישי צריך להכיר את החובות שלו ו-OpenAI רשאית להסיר אתרים שמפרים את המדיניות שלה. פירוט על התנאים האלה יש בחלק על הפרסום.

מה צריך לפני שמתחילים
- מנוי ChatGPT מתאיםPlus, Pro או חשבון עבודה ש-Sites פעיל בו.
- חשבון Googleרק לחלק של החיבור: הגיליון, ה-Apps Script והמיילים יוצאים מהחשבון שלכם.
- לוגו ו-2-3 תמונות של העסקמצרפים אותם לפרומפט ו-Sites גוזר מהם את השפה העיצובית של הדף.
העסק במדריך בדוי: "פול פנימי", סטודיו תל אביבי לסדנאות קפה בקבוצות קטנות, עם בעלת עסק בשם מיה. לפני שבחרתי בשם וידאתי שאין עסק אמיתי שנקרא כך. אתם מחליפים את הפרטים בשלכם.
חלק 1: מתכננים בצ׳אט רגיל
הטעות הנפוצה היא לפתוח את Sites ולכתוב "תבנה לי אתר". יוצא דף כללי וכל תיקון צורך עוד מהמכסה של Work. עדיף להתחיל בשיחה רגילה, שלא נספרת במכסה הזו ולתת ל-ChatGPT לעזור להחליט על מטרת הדף, הקהל, סדר המקטעים, הכפתור הראשי והשדות בטופס. את השיחה מסיימים בבקשה לנסח הכול כבריף אחד להדבקה.
אני פותח [סוג העסק שלכם, למשל: סטודיו לסדנאות קפה בקבוצות קטנות] בשם "[שם העסק]" - [מה אתם מציעים]. אני רוצה לבנות דף נחיתה שמטרתו אחת: [הפעולה שאתם רוצים מהגולש, למשל: הרשמה לסדנת טעימות]. עזור לי לתכנן אותו לפני שאני בונה: מה המטרה המדויקת של הדף, מי הקהל, אילו מקטעים צריכים להיות ובאיזה סדר, איזה CTA, אילו שדות בטופס ההרשמה (מינימום נדרש) ואיזו שפה עיצובית תתאים ללוגו שלי. בסוף נסח לי את כל זה כבריף אחד מסודר שאדביק כמו שהוא לכלי שבונה את האתר.


את ההמלצות מתאימים לצורך
ChatGPT המליץ לוותר על שדה האימייל כדי לקצר את הטופס. השארתי אותו, כי בלי אימייל אין לאן לשלוח את מייל האישור שבחלק 5.
חלק 2: מהפרומפט לאתר חי
ל-Sites מגיעים מסרגל הצד: לוחצים Explore ובוחרים Sites. נפתח עמוד שמרכז את כל האתרים שבניתם, עם חיפוש, תצוגת רשימה או רשת ולשונית Shared with you לאתרים ששיתפו אתכם.

הכפתור Create פותח שיחת Work חדשה עם פתיח מוכן, שמבקש מ-ChatGPT לשאול אתכם על מה האתר. אפשר לענות לשאלות שלו, או למחוק את הפתיח ולהדביק פרומפט מלא. ובכל שיחת Work מספיק לכתוב בבקשה את המילה website, או לתייג @Sites, כדי שהבנייה תעבור דרך Sites.

זה הפרומפט ששלחתי, אחרי שהתאמתי אותו לבריף מחלק 1. לפני השליחה צירפתי בכפתור הפלוס את הלוגו ושתי תמונות מהסדנה. שורת השפה העיצובית מבקשת מ-Sites לגזור את הצבעים מהלוגו. זה בדיוק מה שקרה.
@Sites בנה דף נחיתה חד-עמודי בעברית, RTL מלא, לעסק הבא: העסק: "[שם העסק]" - [תיאור קצר: מה העסק עושה, איפה, למי]. מטרת הדף: [הפעולה האחת]. כל הדף מוביל לטופס אחד. קהל יעד: [מי הקהל]. מבנה: הירו עם הלוגו המצורף, כותרת וכפתור "[נוסח ה-CTA]"; פסקת "על העסק"; כרטיסי [מוצרים/שירותים] עם מחיר; גלריה עם התמונות המצורפות; 3 המלצות (מומצאות, שמות פרטיים בלבד); שאלות נפוצות (4); טופס הרשמה; פוטר עם פרטי קשר. טופס ההרשמה - בדיוק השדות האלה: שם מלא (חובה), טלפון (חובה), אימייל (חובה - לשליחת אישור), [שדה בחירה], תאריך מועדף, הערות. אחרי שליחה להציג הודעת הצלחה באותו עמוד: "קיבלנו את ההרשמה! נחזור אליך תוך יום עסקים" - בלי מעבר לעמוד אחר. שפה עיצובית: לפי הלוגו המצורף - [צבעי המותג שלכם], טיפוגרפיה עברית נקייה, הרבה אוויר, פינות מעוגלות. מובייל: הדף חייב להיראות מצוין ברוחב 390 פיקסלים, כפתורים בגודל אצבע וכפתור הרשמה דביק בתחתית המסך. SEO: כותרת title בעברית עם שם העסק + [ביטוי החיפוש שלכם] ותיאור meta של עד 155 תווים.





כל פריסה עולה לכתובת האמיתית
ב-Sites כל פריסה עולה לכתובת של האתר עצמו. אתר חדש פתוח רק לכם, אז בהתחלה זה לא משנה, אבל כשהאתר כבר ציבורי, שינוי שנפרס מגיע מיד לכל המבקרים. כדי לבדוק שינוי לפני שהוא עולה, מבקשים מ-ChatGPT לשמור גרסה בלי לפרוס, בודקים אותה בתצוגה המקדימה ורק אז מבקשים לפרוס. אפשר גם לבקש ממנו להציג את הגרסאות השמורות.
חלק 3: משפרים בבקשות קטנות
לעריכה חוזרים לשיחה שבה האתר נבנה, או לוחצים בעמוד Sites על שלוש הנקודות ליד האתר ובוחרים Edit. נפתחת שיחת Work עם הפתיח "Make these changes to" והאתר כבר מתויג בה ולצידה תצוגה מקדימה של האתר. בסרגל שמעל התצוגה יש גם Request edits, לסימון חלק בדף שעליו רוצים לבקש שינוי.

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

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

עוד בקשות עריכה שעובדות
- "הגדל את כפתור ההרשמה במובייל והפוך אותו לדביק בתחתית המסך"
- "החלף את תמונת ההירו בתמונה השנייה שצירפתי"
- "קצר את פסקת האודות לשני משפטים"
- "כל הטקסט חייב להיות מיושר לימין, כולל הטקסטים שבתוך שדות הטופס"
תמיד שינוי אחד בכל פעם: קל לוודא שלא נשבר כלום וכל בקשה צורכת פחות מהמכסה.
חלק 4: בודקים ומפרסמים
לפני הפרסום עוברים על חמישה דברים: מובייל, כפתורים, טופס, כיווניות ו-SEO. את המובייל בדקתי ברוחב 390 פיקסלים וקיבלתי את מה שביקשתי, כולל כפתור הרשמה שנשאר צמוד לתחתית המסך.


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


גם ה-SEO שביקשתי נכנס: כותרת הדף היא "פול פנימי | סדנאות קפה בתל אביב" ותיאור ה-meta באורך 155 תווים. רואים את זה בלשונית הדפדפן או בקוד המקור של הדף.
מי רואה את האתר
אתר חדש פתוח רק לבעלים שלו ובחשבון עבודה גם למנהלים, עד שמשנים את הגישה. מבקר אחר מקבל מסך התחברות עם הכפתור Continue with ChatGPT. במסך הזה מופיע שם האתר גם למי שאין לו גישה, אז כדאי לא לשים בשם האתר פרטים שלא נועדו לעיני אחרים.

את הגישה קובעים בחלון Share, שנפתח משיחת האתר או משלוש הנקודות בעמוד Sites. בחשבון אישי, התפריט Link access מציע שתי אפשרויות: Just me, או Anyone on the Internet, שפותח את האתר לכל אחד בלי התחברות. בשדה שמעליו מזמינים אנשים לפי מייל. מי שהוזמן נכנס עם החשבון שקיבל את ההזמנה ורואה את האתר בלי שהוא ציבורי. לפי OpenAI זה עובד גם למי שעוד אין לו חשבון OpenAI. ההזמנות האלה נפתחות בהדרגה ב-Plus, ב-Pro, ב-Business וב-Enterprise. בחשבונות עבודה יש גם אפשרות לפתוח את האתר לכל הארגון.

בפרסום הראשון בוחרים את הקהל ולוחצים Publish. אחרי שהאתר באוויר, החלון מציע Visit לפתיחה ו-Copy link להעתקת הכתובת.

בכתובת מופיע שם המשתמש שלכם ב-ChatGPT (אצלי roit87) וכל מי שמקבל את הקישור רואה אותו. את החלק הראשון של הכתובת אפשר להחליף בהגדרות האתר, דרך Change: לפחות 5 תווים, אותיות לועזיות קטנות, ספרות ומקף בודד. הכתובת הישנה מפנה מעצמה לחדשה. שם המשתמש נשאר בכל מקרה ומי שרוצה כתובת בלעדיו מחבר דומיין משלו.

לפני שמפרסמים אתר עם טופס
לפי תנאי השימוש של Sites, בעל האתר אחראי לאתר ולכל מה שמבקרים שולחים או מפרסמים בו. אם האתר אוסף מידע אישי, אתם האחראים למידע הזה מבחינה משפטית: צריך לתת למבקרים את המידע שהחוק דורש, מדיניות פרטיות כשיש חובה כזו ובקשת הסכמה לעוגיות כשצריך. פרטי בריאות ופרטי כרטיס אשראי אסור לאסוף באתר ואתר לא יכול להיות מיועד לילדים מתחת לגיל 13.
עוד שני דברים מהתנאים: OpenAI רשאית להוסיף לאתר שורה בתחתית או בסרגל שמציינת שהוא נבנה עם ChatGPT ורשאית להסיר אתר שמפר את המדיניות. ובתוכניות Plus ו-Pro, השיחות שבהן בונים ועורכים אתר יכולות לשמש לאימון המודלים אם ההגדרה Improve the model for everyone פעילה, כולל מידע מהאתר ש-ChatGPT מביא לשיחה.
ניהול האתר אחרי שהוא באוויר
בעמוד Sites, שלוש הנקודות ליד כל אתר פותחות ארבע פעולות: Share לגישה, Edit לעריכה, Analytics לנתוני הביקורים ו-Settings להגדרות.

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

- דומיין משלכםדרך Add custom domain מחברים דומיין ראשי או תת-דומיין שכבר בבעלותכם. Sites לא מוכר דומיינים: הוא נותן רשומות DNS שמוסיפים אצל הרשם ואחרי כמה דקות מרעננים את הסטטוס. ב-Enterprise האפשרות עוד לא זמינה.
- משתני סביבה וסודותמפתחות API וערכים סודיים שהאתר צריך נכנסים לכאן, עם הסימון Secret ולא לתוך הפרומפט. אחרי שינוי מבקשים מ-ChatGPT לפרוס שוב את הגרסה, כדי שהערכים החדשים ייכנסו לתוקף.
- מחיקהDelete site מוחק את האתר לתמיד, אחרי שמקלידים את מזהה האתר לאישור ואין דרך לשחזר. כדי רק להוריד אתר מהרשת, מספיק להחזיר את הגישה ל-Just me.
- עבודה משותפתבחשבון עבודה אפשר לתת לחבר צוות הרשאת Can edit. עורך יכול לשנות ולפרסם גרסאות אחרי שהבעלים פרסמו בפעם הראשונה. הוא רואה גם את הנתונים ששמורים באתר.
אנליטיקס
Sites סופר ביקורים לבד, בלי קוד נוסף: מבקרים ייחודיים וצפיות בדפים, גרף לפי יום, בחירה בין 7 ל-30 ימים וטבלת הדפים הנצפים. באתרים שבבעלות חשבון Enterprise הלשונית הזו לא זמינה.

בטבלת הדפים יש פרט שכדאי להכיר: 29 מתוך 77 הצפיות בחודש היו בקשות לקובץ robots.txt, שרובוטים סורקים ולא אנשים. אף אחת מהן לא נספרה כמבקר ייחודי. לכן המדד שכדאי לקרוא הוא המבקרים הייחודיים ולא הצפיות.

נתונים, התחברות ואחסון
כשאתר צריך לזכור משהו, כמו הרשמות, תוצאות או העדפות, מבקשים את זה בפרומפט. Sites משתמש ב-D1, מסד נתונים לרשומות עם עד 10GB לאתר וב-R2 לקבצים כמו תמונות ומסמכים, בלי מגבלת נפח קבועה. את הנתונים שהאתר החי שומר רואים בלשונית Database. לאתר של פול פנימי אין מסד נתונים, כי כל הרשמה נשלחת ישר לגיליון, כמו שמוסבר בחלק 5.
אתר ציבורי יכול להציע גם התחברות עם ChatGPT, לתכונות אישיות כמו התקדמות שמורה או תצוגה אישית, בלי לחסום את מי שלא מתחבר. האתר מקבל את כתובת המייל של המבקר ולפעמים גם את השם שלו. מי שמוסיף התחברות צריך להסביר למבקרים מה הוא מקבל ומה עושה עם זה.
מה קורה מאחורי הקלעים בחיבור
החלק הבא נשען על שני מושגים: הרשאות, כלומר מי מורשה לגעת במידע שלכם ופריסה, כלומר איך קוד הופך לכתובת חיה. דקה של הבנה כאן תעזור לאבחן לבד אם משהו נתקע.
הרשאות
כתיבה לגיליון ושליחת מייל חסומות כברירת מחדל. אתם מאשרים אותן פעם אחת מהחשבון שלכם ויכולים לבטל בכל רגע בהגדרות חשבון Google, תחת האפליקציות המחוברות.
Apps Script
סביבת קוד שגוגל מריצה בשמכם. בזכותה מותר לקוד לכתוב לגיליון שלכם ולשלוח מייל מהחשבון שלכם. היא הגשר בין האתר הציבורי לבין הנכסים הפרטיים שלכם ב-Google.
פריסה
הופכת קוד ששמור אצלכם לכתובת שהעולם יכול לפנות אליה, זו שמסתיימת ב-/exec. שמירה בעורך היא לא פריסה: הכתובת ממשיכה להריץ את הגרסה האחרונה שנפרסה.
החיבורים של ChatGPT
בזמן ההקמה ChatGPT ניגש ל-Google שלכם דרך חיבור שאתם מאשרים, כדי ליצור את הגיליון. זה קורה בתוך השיחה, פעם אחת ולא בכל הרשמה.
אחרי הפריסה השיחה סיימה את תפקידה. בהרשמה עצמה אין שום פנייה למודל של ChatGPT. השרת של האתר מוסיף לבקשה טוקן סודי ושולח אותה לכתובת ה-/exec. הסקריפט של Google שומר שורה ושולח את המיילים. בין שני הצדדים יש רק שני דברים: הכתובת /exec והטוקן, שהוא לא הרשאה של Google אלא סיסמה משותפת לאתר ולסקריפט.
את הטוקן שומרים בהגדרות האתר
בהדגמה הטוקן נכתב בתוך הקוד שבשיחה. בחיבור חדש עדיף לשמור אותו כמשתנה סביבה בהגדרות האתר, עם הסימון Secret: OpenAI ממליצה להשאיר ערכים סודיים מחוץ לפרומפטים ולקבצים המצורפים.
חלק 5: כל הרשמה לגיליון ולמייל
הטופס מציג הודעת הצלחה, אבל כדי שהפרטים יגיעו אליכם צריך לחבר אותו למשהו. בתיעוד של Sites אין שליחת מיילים מובנית, אז ביקשתי מ-ChatGPT, בשיחה של האתר, ליצור גיליון, להוסיף אליו כל הרשמה ולשלוח שני מיילים:
עכשיו תחבר את טופס ההרשמה כך שזה יעבוד באמת: צור בעצמך קובץ Google Sheets בדרייב שלי בשם "הרשמות - [שם העסק]" ובכל שליחת טופס באתר החי תוסיף שורה חדשה עם כל הפרטים (תאריך ושעה, שם מלא, טלפון, אימייל, [שדה הבחירה], תאריך מועדף, הערות). בנוסף, בכל הרשמה חדשה שלח אליי מייל עם פרטי הנרשם ושלח לנרשם עצמו מייל תודה קצר בעברית שמאשר שקיבלנו את הפנייה ושנחזור אליו תוך יום עסקים.
אפשרות אחרת היא לבקש מ-Sites מסד נתונים ולראות את ההרשמות בלשונית Database. בשביל המיילים עדיין צריך שירות חיצוני ולכן בהדגמה בחרתי בגיליון וב-Apps Script.
שלב 1: מחברים את Google, פעם אחת
כדי ליצור גיליון, ChatGPT משתמש בחיבורים ל-Google. אצלי החיבור ל-Gmail פג, אז הופיע כרטיס Reconnect Gmail: לוחצים Reconnect, בוחרים חשבון, מסמנים את תיבת ההרשאה ולוחצים המשך.



שלב 2: ChatGPT יוצר את הגיליון


שלב 3: Apps Script, הגשר לגיליון ולמיילים
אתר ציבורי לא יכול לכתוב ישירות לגיליון שלכם או לשלוח מייל בשמכם. Google דורשת שתאשרו את זה פעם אחת מהחשבון שלכם, דרך סקריפט שאתם פורסים. ChatGPT הסביר את זה, נתן קוד מלא להדבקה והנחיות שלב אחרי שלב:


ChatGPT יכתוב לכם קוד משלו. כדי שיהיה לכם למה להשוות, זו גרסה כללית ועובדת של אותו קוד. מחליפים את הערכים ב-CONFIG:
var CONFIG = {
SPREADSHEET_ID: "YOUR_SHEET_ID", // המזהה מכתובת הגיליון
SHEET_NAME: "הרשמות",
OWNER_EMAIL: "you@example.com", // לאן נשלחת ההתראה
BUSINESS_NAME: "שם העסק",
SECRET_TOKEN: "CHOOSE_A_LONG_RANDOM_TOKEN"
};
function doGet() {
return jsonOut({ ok: true, message: "service is up" });
}
function doPost(e) {
var lock = LockService.getScriptLock();
try {
lock.waitLock(15000);
var data = readBody(e);
if (data.token !== CONFIG.SECRET_TOKEN) {
return jsonOut({ ok: false, error: "Unauthorized" });
}
var reg = {
fullName: clean(data.fullName),
phone: clean(data.phone),
email: clean(data.email).toLowerCase(),
workshopType: clean(data.workshopType),
preferredDate: clean(data.preferredDate),
notes: clean(data.notes)
};
if (!reg.fullName || !reg.phone || !reg.email) {
return jsonOut({ ok: false, error: "missing fields" });
}
var sheet = SpreadsheetApp.openById(CONFIG.SPREADSHEET_ID)
.getSheetByName(CONFIG.SHEET_NAME);
var now = Utilities.formatDate(new Date(), "Asia/Jerusalem", "dd/MM/yyyy HH:mm:ss");
sheet.appendRow([now, reg.fullName, reg.phone, reg.email,
reg.workshopType, reg.preferredDate, reg.notes]);
MailApp.sendEmail({
to: CONFIG.OWNER_EMAIL,
replyTo: reg.email,
name: CONFIG.BUSINESS_NAME,
subject: "הרשמה חדשה - " + reg.fullName,
htmlBody: "<div dir=\"rtl\"><h2>הרשמה חדשה מהאתר</h2>" +
"<p><b>שם:</b> " + esc(reg.fullName) + "</p>" +
"<p><b>טלפון:</b> " + esc(reg.phone) + "</p>" +
"<p><b>אימייל:</b> " + esc(reg.email) + "</p>" +
"<p><b>סוג סדנה:</b> " + esc(reg.workshopType) + "</p>" +
"<p><b>תאריך מועדף:</b> " + esc(reg.preferredDate) + "</p>" +
"<p><b>הערות:</b> " + esc(reg.notes) + "</p></div>"
});
MailApp.sendEmail({
to: reg.email,
replyTo: CONFIG.OWNER_EMAIL,
name: CONFIG.BUSINESS_NAME,
subject: "קיבלנו את ההרשמה שלך - " + CONFIG.BUSINESS_NAME,
htmlBody: "<div dir=\"rtl\"><p>היי " + esc(reg.fullName.split(" ")[0]) + ",</p>" +
"<p>תודה שנרשמת. קיבלנו את הפנייה שלך ונחזור אליך תוך יום עסקים.</p>" +
"<p>" + CONFIG.BUSINESS_NAME + "</p></div>"
});
return jsonOut({ ok: true });
} catch (err) {
console.error(err);
return jsonOut({ ok: false, error: String(err) });
} finally {
try { lock.releaseLock(); } catch (e2) {}
}
}
function readBody(e) {
if (e && e.postData && e.postData.contents) {
try { return JSON.parse(e.postData.contents); } catch (err) {}
}
return (e && e.parameter) ? e.parameter : {};
}
function clean(v) { return String(v || "").trim(); }
function esc(v) {
return String(v || "").replace(/&/g, "&").replace(/</g, "<")
.replace(/>/g, ">").replace(/"/g, """);
}
function jsonOut(data) {
return ContentService.createTextOutput(JSON.stringify(data))
.setMimeType(ContentService.MimeType.JSON);
}
פותחים את הגיליון, בוחרים תוספים ואז Apps Script, מוחקים את הקוד הריק ומדביקים. שומרים עם Ctrl+S, בוחרים את הפונקציה doGet ליד כפתור ההפעלה ולוחצים הפעלה. זה מתחיל את אישור ההרשאות:




שלב 4: פריסה כאפליקציית אינטרנט וחיבור האתר
אחרי שההרצה מצליחה וביומן מופיע "ההפעלה הושלמה", לוחצים לפריסה ואז פריסה חדשה. בגלגל השיניים בוחרים אפליקציית אינטרנט וממלאים:
- תיאור: שם חופשי, למשל "טופס הרשמה - פול פנימי".
- לבצע בתור: עצמי. כך לסקריפט יש הרשאה לגיליון ולמייל שלכם.
- למי יש גישה: כולם. בלי זה האתר הציבורי ייחסם. הטוקן הסודי הוא מה שמגן מפני שימוש זר.
- לפריסה ומעתיקים את הכתובת שמסתיימת ב-/exec.


את הכתובת שלחתי ל-ChatGPT בשיחה של האתר. הוא חיבר את הטופס דרך צד השרת של האתר, כך שהטוקן לא נחשף לאף מבקר והריץ בעצמו הרשמת בדיקה שעברה את כל השרשרת:

שגיאה שקרתה לי: "אין לך הרשאה לביצוע הפעולה"
אם הגיליון נוצר בחשבון Google אחד ובדפדפן אתם מחוברים לחשבון אחר, מה שקורה למי שיש לו חשבון עסקי ופרטי, הפריסה מהסקריפט שצמוד לגיליון תיכשל עם ההודעה הזו. מה שעבד לי: לפתוח פרויקט Apps Script עצמאי בכתובת script.google.com בחשבון שמחובר בדפדפן, להדביק את אותו קוד ולפרוס משם. הקוד פונה לגיליון לפי המזהה שלו, אז הוא עובד מכל חשבון שיש לו הרשאת עריכה.
חלק 6: בדיקה מקצה לקצה
בודקים לבד ובאתר הציבורי ולא בתצוגה המקדימה. פתחתי את האתר החי, נרשמתי בתור נועה כהן וקיבלתי את הודעת ההצלחה:



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

שלחתי טופס ואין שורה וגם לא רישום ביומן
הדפדפן מציג גרסה ישנה של האתר, מלפני החיבור. אצלי קרה בדיוק כך: הודעת הצלחה ושום דבר לא נרשם. עושים רענון מלא (Ctrl+F5) או פותחים חלון גלישה בסתר ושולחים שוב.
שיניתי את הקוד וכלום לא השתנה
עריכה לא נכנסת לפריסה הקיימת. בעורך: לפריסה, ניהול הפריסות, עריכה ובוחרים גרסה חדשה.
הסקריפט מחזיר Unauthorized
הטוקן שהאתר שולח שונה מהטוקן ב-CONFIG, או שהגישה בפריסה לא הוגדרה "כולם". משווים את שני הטוקנים ובודקים את הגדרת הגישה.
המיילים לא מגיעים
תיבת הספאם, או שנגמרה המכסה היומית של MailApp: 100 נמענים ביום בחשבון Google רגיל ו-1,500 ב-Workspace. בודקים בספאם ולעסק עם הרבה נרשמים שוקלים Workspace.
שאלות נפוצות
מה זה ChatGPT Sites ולמי הוא זמין?
כלי של ChatGPT שבונה, מארח ומשתף אתרים ואפליקציות ווב מתוך שיחה. הוא בבטא ציבורית ל-Plus, ל-Pro ולחשבונות Business, Enterprise ו-Edu ולא זמין בתוכנית החינמית וב-Go. בונים ב-Work באתר של ChatGPT, או ב-Work וב-Codex באפליקציית המחשב.
כמה עולה לבנות אתר עם Sites?
Sites כלול בתוכנית, עם מגבלות שימוש לכל תוכנית בזמן הבטא. הבנייה והעריכה נספרות במכסה של Work ו-Codex. ב-Plus וב-Pro אפשר לקנות קרדיטים כשהיא נגמרת. תכנון בצ׳אט רגיל לפני הבנייה חוסך הרבה מהמכסה.
אפשר לבנות עם Sites משהו שהוא לא דף נחיתה?
כן: דאשבורדים, כלים פנימיים, מעקבים ומיני-אפליקציות ששומרות נתונים בין ביקורים, משחקים, חנויות שגובות תשלום דרך ספק סליקה חיצוני וגם ממשקים פרטיים לגמרי כמו מסלול לטיול. כל אתר חדש פתוח רק לבעלים שלו עד שמשנים את הגישה.
Sites יודע לבנות אתר בעברית?
כן. כשכותבים בפרומפט במפורש "בעברית, RTL מלא", הדף נבנה מימין לשמאל, כולל הטופס והטקסטים שבתוך השדות. אם משהו בכל זאת מתהפך, בקשת עריכה קצרה מתקנת אותו.
איך מקבלים מייל על כל נרשם בטופס?
בתיעוד של Sites אין שליחת מיילים מובנית. במדריך ChatGPT יוצר גיליון Google Sheets, אתם פורסים פעם אחת סקריפט Apps Script קטן וכל הרשמה באתר נשמרת כשורה בגיליון ושולחת מייל התראה לבעל העסק ומייל אישור לנרשם.
אפשר לחבר לאתר דומיין משלי?
כן, בהגדרות האתר דרך Add custom domain, עם דומיין שכבר בבעלותכם ורשומות DNS שמוסיפים אצל הרשם. Sites לא מוכר דומיינים. בלי דומיין, הכתובת מסתיימת ב-chatgpt.site וכוללת את שם המשתמש שלכם. אפשר לשנות רק את החלק הראשון שלה.
איך יודעים כמה אנשים נכנסו לאתר?
בעמוד Sites, שלוש הנקודות ליד האתר ואז Analytics: מבקרים ייחודיים, צפיות בדפים, גרף לפי יום וטבלת הדפים הנצפים, ל-7 או ל-30 ימים. כדאי לקרוא את המבקרים הייחודיים: באתר של פול פנימי, קריאות של רובוטים לקובץ robots.txt נספרו בצפיות ולא במבקרים.
איך מורידים אתר מהרשת?
כדי להסתיר אותו, מחזירים את הגישה ל-Just me בחלון Share. כדי למחוק אותו, בוחרים בהגדרות Delete site ומקלידים את מזהה האתר לאישור. מחיקה היא סופית ואתר שנמחק אי אפשר לשחזר.
המקורות הרשמיים
- התיעוד של Sites למפתחים: learn.chatgpt.com
- יצירה, שיתוף וניהול של אתרים: help.openai.com
- האחריות של בעל האתר: help.openai.com
- אתר שאוסף מידע אישי והחוק: help.openai.com
- תנאי השימוש של Sites: openai.com
- גלריית Showcase: learn.chatgpt.com
- המכסות של Apps Script: developers.google.com
האתר של פול פנימי נשאר חי בכתובת pol-pnimi-coffee.roit87.chatgpt.site, עם כל מה שנבנה במדריך. אותו תהליך עובד גם לדאשבורד, למעקב פרויקט או למסלול לטיול הבא.
הירשמו לעדכונים במייל
רוצים להישאר צעד אחד קדימה?
עדכונים על כלי AI, מדריכים וטיפים - ישר למייל. בלי ספאם.
