כל הפרויקטים

מנהל נתונים ב-Google Apps Script

מנהל נתונים דו-משטחי (מודאל בגיליון + web app) עם whitelist עמודות לעריכה חלקית בטוחה.

המטרה

לתת לצוות ממשק עריכה ממוקד על גיליון תפעולי גדול — להציג רק את העמודות הרלוונטיות, לסנן לפי XO ו-Unit, ולאפשר עריכה רק לשתי עמודות ספציפיות (XO Updated, XO Notes) בלי לסכן את השאר.

הפתרון

פרויקט Apps Script עם שני משטחים: Data Manager מודאלי מתפריט גיליון (onOpen → 'Open Manager') ו-deployment web-app דרך doGet. Code.gs חושף CONFIG עם DISPLAY_COLUMNS, FILTER_COLUMNS ו-EDITABLE_COLUMNS. getAllData מחזיר JSON מנורמל ל-HTML UI; ה-handlers מקבלים כתיבה רק ל-whitelist.

עיקרי הדברים

  • HTML אחד משותף למודאל ול-web app
  • Whitelist עמודות בקוד מסלק דריסות בטעות
  • רפרנסי עמודות מונחי-config שורדים גדילת גיליון

האתגר

הצוות נזקק לעריכה מהירה של שתי עמודות, אבל המשיך לדרוס עמודות נוסחה ו-PK בגיליון הגולמי.

משטח עריכה אכוף בקוד: ה-HTML מציג את כל העמודות הרלוונטיות, אבל רק EDITABLE_COLUMNS (R, S) חושפות inputs; ה-handlers בצד השרת דוחים כתיבה לכל עמודה אחרת לפי אות.

Power users רצו את המנהל בתוך הגיליון; אחרים רצו web app bookmarkable — בלי לתחזק שני UIs.

Interface.html אחד שנצרך ע"י showDataManager (מודאל) ו-doGet (web app). אותו HTML, אותו API, שתי נקודות כניסה — בלי כפילות.

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

effectiveLastCol = Math.max(lastCol, maxConfigCol) + getMaxColumnCount(CONFIG.COLUMNS) מבטיחים שטווחי קריאה מכסים את כל העמודות המוגדרות.

מה נמסר

  • Code.gs עם config, doGet, מודאל, handlers ולוגים
  • Interface.html משותף
  • appsscript.json עם OAuth scopes
  • הערות פריסה

תוצאות

2 (modal + web app)

משטחים

13 display / 2 filter / 2 edit

Whitelist

מה זה לימד אותי

  • אובייקט config קטן מנצח אותיות עמודה קשיחות מפוזרות ב-handlers
  • שיתוף HTML יחיד בין מודאל ו-web app הוא כמעט חינם ב-Apps Script