תחומים
    • הרשמה
    • התחברות
    • חיפוש
    • קטגוריות
    • פוסטים אחרונים
    • משתמשים
    • חיפוש
    חוקי הפורום

    גוגל שיטס | העברת שורות לגיליון אחר

    תוכנה
    6
    43
    957
    טוען פוסטים נוספים
    • מהישן לחדש
    • מהחדש לישן
    • הכי הרבה הצבעות
    תגובה
    • הגב כנושא
    התחבר בכדי לפרסם תגובה
    נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
    • ש
      שוהם307 נערך לאחרונה על ידי

      שלום רב,
      יש לי גיליון עם נתונים, בכל שורה יש כמה תאים שמאחסנים מידע על לקוח מסויים, ובתא G1 אני הולך לכתוב "בוצע" שהטיפול בפנייתו הסתיים. ואם כן אין לי עוד צורך בשורה הזאת אלא היא מיועדת לאחסון בארכיון (שבדוגמה שלי זה גיליון אחר שישמש בתור אחסון)
      האם יש פונקציה שאם תא G1=בוצע אז שכל השורה שמימין לתא G1 יעבור אוטומטית לגיליון אחר?

      השתדלתי להסביר כמה שיכולתי מה אני רוצה, אנא עדכנו אותי אם זה לא ברור.
      תודה רבה.

      yossiz בערל 2 תגובות תגובה אחרונה תגובה ציטוט 1
      • yossiz
        yossiz @שוהם307 נערך לאחרונה על ידי yossiz

        @שוהם307 השאלה ברורה מאוד 🙂
        אני לא בקי כלל בזה. עד שהמומחים יבואו לענות, יש לי מראה מקום:
        https://support.google.com/docs/thread/12872567
        הוא מדבר בדיוק על השאלה שלך ומישהו עשה שם סקריפט לדוגמה.
        אפשר ללמוד מזה א) שזה מצריך סקריפט. ב) עם סקריפט זה אפשרי.
        (לא בדקתי את הסקריפט שהוא עושה כי נטפרי...)

        אגב, יש תוכנות שיותר מתאימות לדברים כאלו. לדוגמה airtables ועוד כמליון דברים דומים...

        📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

        ש תגובה 1 תגובה אחרונה תגובה ציטוט 3
        • ש
          שוהם307 @yossiz נערך לאחרונה על ידי

          @yossiz אמר בגוגל שיטס | העברת שורות לגיליון אחר:

          אגב, יש תוכנות שיותר מתאימות לדברים כאלו.

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

          yossiz תגובה 1 תגובה אחרונה תגובה ציטוט 0
          • yossiz
            yossiz @שוהם307 נערך לאחרונה על ידי

            @שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:

            כדי לסנכרן כמה וכמה מחשבים

            זה יש גם ב-airtables. זה מבוסס ווב כמו שיטס.

            📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

            ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
            • ש
              שוהם307 @yossiz נערך לאחרונה על ידי

              @yossiz אמר בגוגל שיטס | העברת שורות לגיליון אחר:

              זה יש גם ב-airtables. זה מבוסס ווב כמו שיטס.

              נשמע מעניין,
              אז יש לי כבר מה ללמוד בבין הזמנים הקצרצר הזה...

              תגובה 1 תגובה אחרונה תגובה ציטוט 1
              • ש
                שוהם307 נערך לאחרונה על ידי

                @OdedDvir לא נעים לי להכביד עליך... אבל אולי בכל זאת?!

                OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                • בערל
                  בערל ניהול @שוהם307 נערך לאחרונה על ידי בערל

                  @שוהם307

                  אני חושב שהדרך העקרונית לניהול מסדי נתונים:

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

                  זה גם יחסוך לך עבודה אם תרצה בעתיד לבצע סיכומים וחישובים על הנתונים.

                  תגובה 1 תגובה אחרונה תגובה ציטוט 1
                  • OdedDvir
                    OdedDvir @שוהם307 נערך לאחרונה על ידי

                    @שוהם307 @yossiz נתן לך מראה מקום לביצוע, הנה עוד אחד עם קוד מפורט:
                    https://stackoverflow.com/questions/21056347/how-to-add-a-button-per-row-in-google-spreadsheet

                    @שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                    @OdedDvir לא נעים לי להכביד עליך... אבל אולי בכל זאת?!

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

                    ש 2 תגובות תגובה אחרונה תגובה ציטוט 5
                    • ש
                      שוהם307 @OdedDvir נערך לאחרונה על ידי

                      @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                      אבל אם אתה רוצה שאעשה את הכל לבד,

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

                      תודה רבה.

                      תגובה 1 תגובה אחרונה תגובה ציטוט 1
                      • י
                        יוני הלפרין נערך לאחרונה על ידי

                        אולי אפשר להשתמש בפונקציית ARRAYFORMULA יחד עם תנאי?

                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                        • ש
                          שוהם307 @OdedDvir נערך לאחרונה על ידי

                          @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                          הנה עוד אחד עם קוד מפורט:
                          https://stackoverflow.com/questions/21056347/how-to-add-a-button-per-row-in-google-spreadsheet

                          אז אכן, אני מנסה לקפוץ למים...

                          1. על פי הקוד הנ"ל אגדיר שבעמודה 13 יהיה כתוב המילה 'TRUE' וזה
                            יהיה התנאי להפעלת הקוד.
                          2. את הקוד אני מעתיק כמו שהוא ומשנה שבמקום Move Row יהיה TRUE ובמקום 10 שיהיה 13.
                          3. בשורה האחרונה בקוד לא הבנתי מה הוא הקליד בטווח, מה הכוונה 1,10 ?
                            ולמעשה, אני רוצה שיופעל סקריפט בכל שורה ושורה, שאם עמודה 13=TRUE אז שיעביר את השורה הזאת ספציפית לגיליון אחר.

                          אז על פניו נראה שרק עניין הטווח עדיין לא מסודר.
                          תודה.

                          OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 1
                          • OdedDvir
                            OdedDvir @שוהם307 נערך לאחרונה על ידי

                            @שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                            בשורה האחרונה בקוד לא הבנתי מה הוא הקליד בטווח, מה הכוונה 1,10 ?

                            הגדרת הפונקציה לפי הדוקומנטציה של גוגל:

                            getRange(row, column, numRows, numColumns)
                            

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

                            לדוגמא:

                            getRange(1,1,3,10)
                            

                            יחזיר טווח מלבני של 3X10 תאים, החל מהתא הראשון בשורה הראשונה, כלומר את הטווח A1:J3.
                            ניתן להשמיט את הפרמטר הרביעי - ואז תקבל טווח עם עמודה בודדת, או את שני הפרמטרים האחרונים (השלישי והרביעי) - ואז תקבל תא יחיד.

                            ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
                            • ש
                              שוהם307 @OdedDvir נערך לאחרונה על ידי שוהם307

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

                              OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                              • OdedDvir
                                OdedDvir @שוהם307 נערך לאחרונה על ידי OdedDvir

                                אחרי השורה הזו:

                                    var range = ss.getRange(row, 1, 10) // this is your range, do with it what you will
                                

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

                                const targetSheetName = "שם-גליון-היעד"
                                var targetSheet = ss.getSheetByName(targetSheetName);
                                var lastRow = targetSheet.getLastRow();
                                // בוא נוודא שיש מקום לשורה חדשה בגליון
                                if (lastRow < targetSheet.getMaxRows()) {
                                   targetSheet.insertRowsAfter(lastRow, 1);
                                   //העתקת הנתונים שבטווח (12 עמודות) לשורה חדשה
                                   targetSheet.getRange(lastRow + 1, 1, 1, 12).setValues(range.getValues());
                                }
                                
                                ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                • ש
                                  שוהם307 @OdedDvir נערך לאחרונה על ידי שוהם307

                                  לתומי צירפתי את שני הקודים, האם אכן לזה התכוונת?

                                  function onEdit(eventInfo) {
                                    if (eventInfo.range.getColumn() == 13 && eventInfo.value == "TRUE")
                                    {
                                      var ss = eventInfo.source;
                                      var row = eventInfo.range.getRow();
                                      var range = ss.getRange( row ,1,10) // this is your range, do with it what you will
                                      const targetSheetName = "ארכיון"
                                  var targetSheet = ss.getSheetByName(targetSheetName);
                                  var lastRow = targetSheet.getLastRow();
                                  // בוא נוודא שיש מקום לשורה חדשה בגליון
                                  if (lastRow < targetSheet.getMaxRows()) {
                                     targetSheet.insertRowsAfter(lastRow, 1);
                                     //העתקת הנתונים שבטווח (12 עמודות) לשורה חדשה
                                     targetSheet.getRange(lastRow + 1, 1, 12, 1).setValues(range.getValues());
                                  }
                                  
                                    }
                                  
                                  }
                                  

                                  בשורה 6 עדיין לא ברור מה להכניס, הרי אין לי טווח קבוע, אלא רק טווח שמימין לתא שכתוב שם true.
                                  בשורה 14 יכול להיות שהתכוונת להקליד 1,1,1,12?

                                  וכשאני מנסה להריץ את הסקריפט אני מקבל שגיאה, כדלהלן, (נראה שיש בעיה בשורה 2.)
                                  1.png
                                  ועוד משהו, מהיכן הקוד אמור לדעת באיזה גיליון אני נמצא עכשיו?

                                  תודה רבה רבה, זה עוזר לי המון.

                                  OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                  • OdedDvir
                                    OdedDvir @שוהם307 נערך לאחרונה על ידי

                                    @שוהם307 השאיפה שלי היא שתבין את הקוד שכתבתי בפוסט האחרון, לפני שאתה משתמש בו.

                                    בשורה 14 יכול להיות שהתכוונת להקליד 1,1,1,12?

                                    נכון! תיקנתי במקור. הבנת טוב!

                                    אני מוכן לכתוב לך את הכל, ובתמורה, אתה תנסה להבין בדיוק מה קורה בכל שורה, כך שכל שאלותיך יקבלו תשובה. עשינו עסק?

                                    OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 3
                                    • OdedDvir
                                      OdedDvir @OdedDvir נערך לאחרונה על ידי OdedDvir

                                      @odeddvir הנה הקוד המלא:

                                      const printSelectionColumn = 4; // מספר העמודה שמכילה את תיבת ההדפסה
                                      const targetSheetName = "ארכיון"
                                      
                                      function onEdit(e) {
                                        var sheet = SpreadsheetApp.getActiveSheet();
                                        var column = sheet.getActiveCell().getColumn();
                                        var cellValue = sheet.getActiveCell().getValue();
                                        if (column == printSelectionColumn && cellValue == "הדפס")
                                        {
                                          //קבלת השורה הנוכחית בגליון
                                          var row = sheet.getActiveCell().getRow();
                                         //שליפת הערכים מהעמודה הראשונה ועד לעמודה הנוכחית פחות אחת
                                          var values = sheet.getRange(row,1,1,printSelectionColumn-1).getValues();
                                          //יצירת משתנה שמצביע על גליון היעד
                                          var targetSheet = SpreadsheetApp.getActive().getSheetByName(targetSheetName);
                                         //חישוב מספר השורות הקיימות בגליון היעד
                                          var lastRow = targetSheet.getLastRow();
                                          // בוא נוודא שיש מקום לשורה חדשה בגליון
                                          if (lastRow < targetSheet.getMaxRows()) {
                                             targetSheet.insertRowAfter(lastRow+1);
                                             //העתקת הנתונים שבטווח לשורה חדשה
                                            var targetRange = targetSheet.getRange(lastRow + 1, 1, 1,printSelectionColumn-1);
                                            targetRange.setValues(values);
                                         }
                                        }
                                      }
                                      
                                      ש 2 תגובות תגובה אחרונה תגובה ציטוט 4
                                      • ש
                                        שוהם307 @OdedDvir נערך לאחרונה על ידי

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

                                        OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                        • OdedDvir
                                          OdedDvir @שוהם307 נערך לאחרונה על ידי

                                          @שוהם307 אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                                          האם יש אפשרות לשדרג את הקוד, שאחרי שהוא מעתיק את השורה לארכיון, שימחק את השורה המקורית?

                                          כן, פשוט תוסיף את השורה הבאה מיד אחרי שורה 23:

                                                sheet.deleteRow(row);
                                          
                                          ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                          • ש
                                            שוהם307 @OdedDvir נערך לאחרונה על ידי

                                            @odeddvir תודה,
                                            מה המשמעות של row ?

                                            OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                            • OdedDvir
                                              OdedDvir @שוהם307 נערך לאחרונה על ידי

                                              @שוהם307 בקוד שהבאתי, row הוא שם של משתנה (אובייקט) שמחזיק את הערך של השורה הנוכחית.
                                              בשורה 11 אני יוצר אותו ונותן לו ערך על ידי הפקודה:

                                                  var row = sheet.getActiveCell().getRow();
                                              
                                              תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                              • ש
                                                שוהם307 @OdedDvir נערך לאחרונה על ידי

                                                @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                                                > if (column == printSelectionColumn && cellValue == "הדפס")
                                                

                                                יש משהו מוזר קצת, הסריפט עובד רק אם אני מקליד בצורה ידנית את המילה 'הדפס',
                                                אם בתא תופיע המילה 'הדפס' לא ע"י הקלדה ידנית אלא ע"י פונקציה, (כמו IF תא A1= בוצע אז תא M1=הדפס), בכזה מקרה הסקריפט לא עובד.
                                                מעניין, לא?!

                                                OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                • OdedDvir
                                                  OdedDvir @שוהם307 נערך לאחרונה על ידי OdedDvir

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

                                                  ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                                  • ש
                                                    שוהם307 @OdedDvir נערך לאחרונה על ידי

                                                    @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

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

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

                                                    תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                    • OdedDvir
                                                      OdedDvir נערך לאחרונה על ידי

                                                      @שוהם307 תוכל להשתמש באימות נתונים (בתפריט: נתונים > אימות נתונים), וליצור בתא תיבת סימון כן שהמשתמש פשוט יוכל לסמן V כדי להעביר את השורה (ואז לשנות את הבדיקה של תוכן התא ל"TRUE"), או ליצור רשימת ערכים מוגדרת מראש שבה יש אפשרות לבחור מתוך רשימה את האפשרות "העבר", זה ימנע העברות בטעות על ידי הקלקה בטעות ללא שימת לב.

                                                      ש תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                      • ש
                                                        שוהם307 @OdedDvir נערך לאחרונה על ידי

                                                        @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                                                        וליצור בתא תיבת סימון כן שהמשתמש פשוט יוכל לסמן V כדי להעביר את השורה (ואז לשנות את הבדיקה של תוכן התא ל"TRUE"),

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

                                                        תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                        • ש
                                                          שוהם307 נערך לאחרונה על ידי

                                                          @OdedDvir מה יכולה להיות הסיבה שהסקריפט לא עובד אצל מי שקיבל שיתוף?
                                                          תודה.

                                                          OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                          • OdedDvir
                                                            OdedDvir @שוהם307 נערך לאחרונה על ידי OdedDvir

                                                            @שוהם307 מכיון שהשתמשתי בפונקציית ארוע (טריגר) אוטומטי onEdit, כברירת מחדל, להרצת סקריפטים באופן אוטומטי יש הגבלות שונות. זהו מנגנון הגנה שמבטיח שאדם לא יגרום להרצת סקריפט באופן לא מודע.
                                                            כל מי שרוצה להפעיל את הסקריפט בארוע הנ"ל צריך לאשר בפירוש לאפליקציה שלך את האפשרות להרצת סקריפטים אוטומטית. בדיוק כמו שאתה עשית בעצמך:

                                                            בחר בתפריט: כלים > רכיבי מאקרו > ייבוא. תוצג לך רשימה של הפונקציות הקיימות בעורך.
                                                            בחר את הפונקציה onEdit, ולחץ על הוסף פונקציה.

                                                            אם הייתי מריץ סתם פונקציה שכתבתי שאינה קשורה לאירוע אוטומטי - לא היה צורך באישור כזה.

                                                            ולגבי מה שכתבת לעיל:

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

                                                            עובד מצוין:
                                                            4e2a0f7a-2a7f-4f40-95a1-3ba9f696974b-תמונה.png
                                                            מסתמא יש לך טעות כלשהי. פרט מה עשית ונראה מה הבעיה.

                                                            ש תגובה 1 תגובה אחרונה תגובה ציטוט 1
                                                            • ש
                                                              שוהם307 @OdedDvir נערך לאחרונה על ידי

                                                              @odeddvir אמר בגוגל שיטס | העברת שורות לגיליון אחר:

                                                              מסתמא יש לך טעות כלשהי. פרט מה עשית ונראה מה הבעיה.

                                                              אני מדבר על הרעיון שהבאת שהמשתמש רק יסמן V ואז הסקריפט יבדוק אם התא הוא TRUE, זה לא עובד.

                                                              תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                              • ש
                                                                שוהם307 נערך לאחרונה על ידי

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

                                                                OdedDvir תגובה 1 תגובה אחרונה תגובה ציטוט 0
                                                                • 1
                                                                • 2
                                                                • 1 / 2
                                                                • פוסט ראשון
                                                                  פוסט אחרון
                                                                בא תתחבר לדף היומי!