דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תוכנה
  3. גוגל שיטס | העברת שורות לגיליון אחר

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

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

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

    OdedDvirO תגובה 1 תגובה אחרונה
    0
    • OdedDvirO מנותק
      OdedDvirO מנותק
      OdedDvir
      השיב לשוהם307 ב נערך לאחרונה על ידי OdedDvir
      #14

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

          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
        #15

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

        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
        ועוד משהו, מהיכן הקוד אמור לדעת באיזה גיליון אני נמצא עכשיו?

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

        OdedDvirO תגובה 1 תגובה אחרונה
        0
        • OdedDvirO מנותק
          OdedDvirO מנותק
          OdedDvir
          השיב לשוהם307 ב נערך לאחרונה על ידי
          #16

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

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

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

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

          OdedDvirO תגובה 1 תגובה אחרונה
          3
          • OdedDvirO מנותק
            OdedDvirO מנותק
            OdedDvir
            השיב לOdedDvir ב נערך לאחרונה על ידי OdedDvir
            #17

            @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 ב נערך לאחרונה על ידי
              #18

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

              OdedDvirO תגובה 1 תגובה אחרונה
              1
              • OdedDvirO מנותק
                OdedDvirO מנותק
                OdedDvir
                השיב לשוהם307 ב נערך לאחרונה על ידי
                #19

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

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

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

                      sheet.deleteRow(row);
                
                ש תגובה 1 תגובה אחרונה
                1
                • ש מנותק
                  ש מנותק
                  שוהם307
                  השיב לOdedDvir ב נערך לאחרונה על ידי
                  #20

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

                  OdedDvirO תגובה 1 תגובה אחרונה
                  0
                  • OdedDvirO מנותק
                    OdedDvirO מנותק
                    OdedDvir
                    השיב לשוהם307 ב נערך לאחרונה על ידי
                    #21

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

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

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

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

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

                      OdedDvirO תגובה 1 תגובה אחרונה
                      0
                      • OdedDvirO מנותק
                        OdedDvirO מנותק
                        OdedDvir
                        השיב לשוהם307 ב נערך לאחרונה על ידי OdedDvir
                        #23

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

                        ש תגובה 1 תגובה אחרונה
                        1
                        • ש מנותק
                          ש מנותק
                          שוהם307
                          השיב לOdedDvir ב נערך לאחרונה על ידי
                          #24

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

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

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

                          תגובה 1 תגובה אחרונה
                          0
                          • OdedDvirO מנותק
                            OdedDvirO מנותק
                            OdedDvir
                            כתב ב נערך לאחרונה על ידי
                            #25

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

                            ש תגובה 1 תגובה אחרונה
                            0
                            • ש מנותק
                              ש מנותק
                              שוהם307
                              השיב לOdedDvir ב נערך לאחרונה על ידי
                              #26

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

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

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

                              תגובה 1 תגובה אחרונה
                              0
                              • ש מנותק
                                ש מנותק
                                שוהם307
                                כתב ב נערך לאחרונה על ידי
                                #27

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

                                OdedDvirO תגובה 1 תגובה אחרונה
                                0
                                • OdedDvirO מנותק
                                  OdedDvirO מנותק
                                  OdedDvir
                                  השיב לשוהם307 ב נערך לאחרונה על ידי OdedDvir
                                  #28

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

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

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

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

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

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

                                  ש תגובה 1 תגובה אחרונה
                                  1
                                  • ש מנותק
                                    ש מנותק
                                    שוהם307
                                    השיב לOdedDvir ב נערך לאחרונה על ידי
                                    #29

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

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

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

                                    תגובה 1 תגובה אחרונה
                                    0
                                    • ש מנותק
                                      ש מנותק
                                      שוהם307
                                      כתב ב נערך לאחרונה על ידי
                                      #30

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

                                      OdedDvirO תגובה 1 תגובה אחרונה
                                      0
                                      • OdedDvirO מנותק
                                        OdedDvirO מנותק
                                        OdedDvir
                                        השיב לשוהם307 ב נערך לאחרונה על ידי
                                        #31

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

                                        במחשב המשותף הוא מתקשה למחוק את המקור.

                                        האם הרשית למחשב המשותף עריכה מלאה לגליון או רק צפייה?

                                        ש 2 תגובות תגובה אחרונה
                                        2
                                        • ש מנותק
                                          ש מנותק
                                          שוהם307
                                          השיב לOdedDvir ב נערך לאחרונה על ידי
                                          #32

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

                                          האם הרשית למחשב המשותף עריכה מלאה לגליון או רק צפייה?

                                          הרשאת עריכה, (לא בעלים, כמובן)

                                          תגובה 1 תגובה אחרונה
                                          0

                                          • 1
                                          • 2
                                          • 3
                                          בא תתחבר לדף היומי!
                                          • התחברות

                                          • אין לך חשבון עדיין? הרשמה

                                          • התחברו או הירשמו כדי לחפש.
                                          • פוסט ראשון
                                            פוסט אחרון
                                          0
                                          • דף הבית
                                          • קטגוריות
                                          • פוסטים אחרונים
                                          • משתמשים
                                          • חיפוש
                                          • חוקי הפורום