גוגל שיטס | העברת שורות לגיליון אחר
-
@odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:
> if (column == printSelectionColumn && cellValue == "הדפס")
יש משהו מוזר קצת, הסריפט עובד רק אם אני מקליד בצורה ידנית את המילה 'הדפס',
אם בתא תופיע המילה 'הדפס' לא ע"י הקלדה ידנית אלא ע"י פונקציה, (כמו IF תא A1= בוצע אז תא M1=הדפס), בכזה מקרה הסקריפט לא עובד.
מעניין, לא?! -
@odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:
@שוהם307 זה מובן, כי הקוד מוגדר לרוץ באירוע onEdit, שמופעל רק כאשר תוכן של תא משתנה באופן ידני על ידי המשתמש. שינוי של תא באופן אוטומטי, כגון על ידי נוסחא - לא מפעיל את האירוע.
דברים של טעם,
ואני חושב גם שזו לא בקשה מוגזמת שהמשתמש יכניס את זה בצורה ידנית.
אבל אם יש אפשרות לעשות את זה אוטומטי, מבלי שהמשתמש יצטרך לעשות זאת, זה יהיה יותר מוצלח בעיניי. -
@שוהם307 תוכל להשתמש באימות נתונים (בתפריט: נתונים > אימות נתונים), וליצור בתא תיבת סימון כן שהמשתמש פשוט יוכל לסמן V כדי להעביר את השורה (ואז לשנות את הבדיקה של תוכן התא ל"TRUE"), או ליצור רשימת ערכים מוגדרת מראש שבה יש אפשרות לבחור מתוך רשימה את האפשרות "העבר", זה ימנע העברות בטעות על ידי הקלקה בטעות ללא שימת לב.
-
@odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:
וליצור בתא תיבת סימון כן שהמשתמש פשוט יוכל לסמן V כדי להעביר את השורה (ואז לשנות את הבדיקה של תוכן התא ל"TRUE"),
משום מה הדבר הזה לא עובד, (ניסיתי את זה ממש בתחילת העבודה על הגיליון, לגבי עיצוב מותנה, וזה פשוט לא עובד).
-
@שוהם307 מכיון שהשתמשתי בפונקציית ארוע (טריגר) אוטומטי onEdit, כברירת מחדל, להרצת סקריפטים באופן אוטומטי יש הגבלות שונות. זהו מנגנון הגנה שמבטיח שאדם לא יגרום להרצת סקריפט באופן לא מודע.
כל מי שרוצה להפעיל את הסקריפט בארוע הנ"ל צריך לאשר בפירוש לאפליקציה שלך את האפשרות להרצת סקריפטים אוטומטית. בדיוק כמו שאתה עשית בעצמך:בחר בתפריט: כלים > רכיבי מאקרו > ייבוא. תוצג לך רשימה של הפונקציות הקיימות בעורך.
בחר את הפונקציה onEdit, ולחץ על הוסף פונקציה.אם הייתי מריץ סתם פונקציה שכתבתי שאינה קשורה לאירוע אוטומטי - לא היה צורך באישור כזה.
ולגבי מה שכתבת לעיל:
משום מה הדבר הזה לא עובד, (ניסיתי את זה ממש בתחילת העבודה על הגיליון, לגבי עיצוב מותנה, וזה פשוט לא עובד).
עובד מצוין:
מסתמא יש לך טעות כלשהי. פרט מה עשית ונראה מה הבעיה. -
@OdedDvir תשמע משהו מעניין,
במחשב המשותף אכן אישרתי בפירוש להריץ סקריפטים כמו שכתבת לי לעיל,
וכשאני מקיש 'הדפס' הוא אכן עובר לארכיון, אבל הוא לא נמחק מהמקור.
כשאני מריץ את הסקריפט מהמחשב שלי אז הכל בסדר והוא מבצע הרצה מלאה, אבל במחשב המשותף הוא מתקשה למחוק את המקור. -
@שוהם307 לדעתי יש דרך פשוטה הרבה יותר ע"מ לענות על הצורך שלך.
תוסיף 'כלי סינון' על הטבלה (תפריט נתונים>כלי סינון) כמובן תגדיר על העמודה הרלוונטית (G אם הבנתי) סינון שיופיעו רק ערך 'לא בוצע'.
בגיליון שאתה רוצה להשתמש בו כארכיון לפניות שטופלו תשתמש בפונקציה FILTER ע"מ למשוך נתונים שיענו על התנאי שתגדיר (דהיינו: בוצע)
ושלום על ישראל!
הבעיה היחידה שתתעורר היא שהסינון מתרענן רק בטעינה מחדש של הגיליון (אם תגדיר כברירת מחדל) ולא פועל אוטומטית כשמסמנים כבוצע, השאלה היא האם דחוף לך שמיידית זה לא יופיע או שזה לא משנה לך. וגם אם כן הקוד שתצטרך לכתוב הרבה יותר פשוט, צריך סה"כ שהסינון יתרענן בכל שינוי בעמודה הספציפית הזו, כמדומני שזה הרבה יותר קל מאשר לבנות את כל הנושא על קוד (מצאתי כבר כמה דוגמאות לזה בחיפוש פשוט).
הרווח שלך יהיה גם שאם תרצה יום אחד לראות את כל הנתונים יחד תצטרך סה"כ לשנות הגדרות מסנן. כי השורות מופיעות מאחורי הקלעים! אתה רק עושה סינון עליהם.
נדמה לי שככה אני הייתי עושה.
בהצלחה! -
@nach אמר בגוגל שיטס | העברת שורות לגיליון אחר:
השאלה היא האם דחוף לך שמיידית זה לא יופיע או שזה לא משנה לך
לא משנה לי, אפילו יש עדיפות שיישאר קצת מוצג כדי שתהיה אפשרות להתחרט.
אהבתי את הרעיון, תודה.
עוד מעט נראה איך אני מבצע א זה בפועל, כי עוד לא התעסקתי עם FILTERאבל להיכן הוא ימשוך את הנתונים, כן הייתי רוצה גיליון עם כל הנתונים שסוננו.
-
@שוהם307 מאוד פשוט.
אתה עושה גיליון חדש שבו יש רק בתא הראשון את הנוסחה במבנה הבא:=filter(הטווח של כל הטבלה, טווח שעליו אתה מכיל את הקריטוריון וכמובן את הקריטוריון עצמו)
פונקציית filter היא פונקציית מערך! מה שאומר שני דברים: א. הוא חל על כל הטבלה והטווח שהגדרת לו וע"פ התנאי שתחמת עבורו ושולף את כל שורות הנתונים התואמים לכלל. ב. הוא צריך שלא יהיו נתונים אחרים בטווח שהוא אמור לפרוס עליו את התוצאה, לכן עדיף להשתמש בגיליון ריק לחלוטין (לפחות מתחת לפונקציה)
שים לב להשתמש באותו גודל טווח נתונים דהיינו לפי הדוגמה הבאה:=filter(data!a2:g2000,data!g2:g2000="בוצע")
that's it
אני עצמי עשיתי לפני קצת זמן פרויקט נחמד מאוד בסגנון הזה ואין לי בעיה לעזור לך רק שתנסה גם להסתדר, אפשר לחפש באינטרנט איך כותבים פונקציה כזו ואיך כותבים תנאים. ומה שלא תסתדר יעזרו לך כאן בשמחה (נראה לי...) -
@שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:
אבל להיכן הוא ימשוך את הנתונים, כן הייתי רוצה גיליון עם כל הנתונים שסוננו.
אם תאמץ את הגישה שהציע @nach, גם זו לא בעיה: תוכל ליצור שני גליונות מסוננים, אחד עם הרשומות שנשארו ואחד עם הרשומות שהוצאו. פשוט תשנה את הגדרת המסנן.
-
@odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:
@שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:
אבל להיכן הוא ימשוך את הנתונים, כן הייתי רוצה גיליון עם כל הנתונים שסוננו.
אם תאמץ את הגישה שהציע @nach, גם זו לא בעיה: תוכל ליצור שני גליונות מסוננים, אחד עם הרשומות שנשארו ואחד עם הרשומות שהוצאו. פשוט תשנה את הגדרת המסנן.
אם תרצה דווקא לעוף על זה תוכל לעשות שהמסנן יהיה לפי תא שבכל פעם תוכל לבחור בו 'הצג הכל' / 'רק פניות שטופלו' / 'פניות שלא טופלו' וכו' ולקשר את התנאי לתא הזה. הכל אפשרי ואפשר להתפתח על הדרך..