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

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

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

מהירות העבודה של גוגל סקריפט

מתוזמן נעוץ נעול הועבר תוכנה
23 פוסטים 5 כותבים 424 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    שמחה זו הסיסמא
    כתב ב נערך לאחרונה על ידי
    #1

    האם יש דרך לשפר את מהירות העבודה של גוגל סקריפט (בתשלום)

    dovidD תגובה 1 תגובה אחרונה
    0
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      השיב לשמחה זו הסיסמא ב נערך לאחרונה על ידי
      #2

      @שמחה-זו-הסיסמא מה לאט לך שמה?

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      ש תגובה 1 תגובה אחרונה
      0
      • ש מנותק
        ש מנותק
        שמחה זו הסיסמא
        השיב לdovid ב נערך לאחרונה על ידי שמחה זו הסיסמא
        #3

        @dovid כל פעם שמפעילים סקריפט זה לוקח זמן, כמובן לפי כמות העבודה שלו.

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

        אפשר לראות כאן הרחבה על העניין של פונקציה goGet

        dovidD תגובה 1 תגובה אחרונה
        0
        • dovidD מנותק
          dovidD מנותק
          dovid ניהול
          השיב לשמחה זו הסיסמא ב נערך לאחרונה על ידי
          #4

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

          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

          בכל נושא אפשר ליצור קשר dovid@tchumim.com

          ש תגובה 1 תגובה אחרונה
          3
          • ש מנותק
            ש מנותק
            שמחה זו הסיסמא
            השיב לdovid ב נערך לאחרונה על ידי שמחה זו הסיסמא
            #5

            @dovid
            הבנתי את השאלה שלך, אבל מדובר במגוון של דברים, ואני מחפש אפשרות אולי בתשלום שתמהר את הפעולה שלו, ולא לשכלל את הקוד שלי.
            על אף שאני אבדוק גם את מה שאתה אומר

            מישהוא אמר לי שאולי עם google cloud זה אפשרי רק שאני לא יודע איך מתעסקים עם זה

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

              @dovid אני כתבתי את הקוד המדובר 🙂
              ולעניות דעתי אין בו קריאות מיותרות
              יש קריאה אחת בהתחלה לקבל את כל הנתונים כמערך דו מימדי (ככה הם קוראים לזה), זה נצרך בגלל שהקוד מחפש שורה שעומדת בתנאים מסוימים
              ובסיום יש קריאה נוספת לעדכון
              האמת שבמקור עשיתי בבת אחת עדכון לכל השורה (כלומר getRange לכל השורה ואז setValues), כאשר היכן שאין מה לעדכן (לא נשלח ערך חדש עבור התא) מכניס את התוכן המקורי (שהתקבל בקריאה הראשונה),
              ועכשיו שיניתי כך שיעדכן רק היכן שיש צורך, כך שזה במקום קריאה אחת לעדכון של כל השורה, יש בין 1 ל7 (תלוי בכמות התאים שמתעדכנים) קריאות קטנות כדי לעדכן כל תא, אבל מבדיקה שלי זה לא גורם לאיטיות, נראה שבאמת לוקח לסקריפט זמן לפעול
              למעשה זה החלקים היחידים שמתקשרים עם השיטס:

              const sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheetName);
              const table = sheet.getDataRange().getValues();
              

              בהתחלה, כאשר לא מדובר בגליון גדול
              ואז לוגיקה די פשוטה של JS, ובסוף

              for (const [i, call] of row.entries()) {
                  if (call !== 'original-value') {
                      sheet.getRange(rowIndex + 2, i + 1, 1, 1).setValue([call]);
                  }
              }
              

              או:

              sheet.deleteRow(rowIndex + 2);
              

              Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
              טיפים

              dovidD Y.Excel.AccessY 2 תגובות תגובה אחרונה
              1
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לצדיק תמים ב נערך לאחרונה על ידי
                #7

                @צדיק-תמים כלומר לא הסקריפט לוקח זמן אלא פשוט יש שיהוי בין הבקשה להפעלה?

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                צדיק תמיםצ תגובה 1 תגובה אחרונה
                0
                • Y.Excel.AccessY מנותק
                  Y.Excel.AccessY מנותק
                  Y.Excel.Access
                  השיב לצדיק תמים ב נערך לאחרונה על ידי Y.Excel.Access
                  #8

                  @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

                  למעשה זה החלקים היחידים שמתקשרים עם השיטס:

                  const sheet = SpreadsheetApp.openByUrl(sheetUrl).getSheetByName(sheetName);
                  const table = sheet.getDataRange().getValues();
                  

                  בהתחלה, כאשר לא מדובר בגליון גדול
                  ואז לוגיקה די פשוטה של JS, ובסוף

                  for (const [i, call] of row.entries()) {
                      if (call !== 'original-value') {
                          sheet.getRange(rowIndex + 2, i + 1, 1, 1).setValue([call]);
                      }
                  }
                  

                  או:

                  sheet.deleteRow(rowIndex + 2);
                  

                  לכאורה העניין הוא בשימוש ב for עם setValue ולא ב setValues אחד. כי הדבר הכבד כאן הוא הקריאה שוב ושוב לקובץ מקובץ הקוד החיצוני.
                  הרחבה - (איך להזין מערך ל SHEETS בקריאה אחת) - https://stackoverflow.com/questions/11495588/write-an-array-of-values-to-a-range-of-cells-in-a-spreadsheet

                  Y.Excel.Access @ gmail.com

                  צדיק תמיםצ תגובה 1 תגובה אחרונה
                  0
                  • צדיק תמיםצ מנותק
                    צדיק תמיםצ מנותק
                    צדיק תמים
                    השיב לdovid ב נערך לאחרונה על ידי
                    #9

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

                    const secret = 'tgy4rugh84'
                    function doPost(req) {
                      if (req.parameter.secret !== secret) {
                        return ContentService.createTextOutput(
                          JSON.stringify({
                            error: 'Unauthorized',
                          })
                        ).setMimeType(ContentService.MimeType.JSON);
                      }
                      return ContentService.createTextOutput(
                        JSON.stringify({
                          message: 'OK',
                        })
                      ).setMimeType(ContentService.MimeType.JSON);
                    }
                    

                    לוקח לו להחזיר תשובה בין 0.9 ל1.5 שניות

                    Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                    טיפים

                    OdedDvirO תגובה 1 תגובה אחרונה
                    0
                    • צדיק תמיםצ מנותק
                      צדיק תמיםצ מנותק
                      צדיק תמים
                      השיב לY.Excel.Access ב נערך לאחרונה על ידי צדיק תמים
                      #10

                      @Y-Excel-Access @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

                      האמת שבמקור עשיתי בבת אחת עדכון לכל השורה (כלומר getRange לכל השורה ואז setValues), כאשר היכן שאין מה לעדכן (לא נשלח ערך חדש עבור התא) מכניס את התוכן המקורי (שהתקבל בקריאה הראשונה),
                      ועכשיו שיניתי כך שיעדכן רק היכן שיש צורך, כך שזה במקום קריאה אחת לעדכון של כל השורה, בין 1 ל7 (תלוי בכמות התאים שמתעדכנים) קריאות קטנות כדי לעדכן כל תא, אבל מבדיקה שלי זה לא גורם לאיטיות,

                      כלומר שאני מכיר את הצורה הנ"ל, ובמקרה הזה היא לא מתאימה (כיוון שישנם תאים עם נוסחאות, והgetDataRange().getValues() מקבל אותם כטקסט מקובע וממילא גם הsetValues בסוף מחזיר אותם כטקסט, ודורס את הנוסחה).
                      בכל מקרה כמו שכתבתי, אני לא חושב שעדכון של כל תא בשורה המסוימת בנפרד, במקום עדכון בבת אחת של כל ה1-7 תאים, הוא זה שגורם לאיטיות. הסקריפט אמור להתמודד בקלות עם כזה דבר. ראה גם מה שכתבתי בתגובה מעל 👆

                      Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                      טיפים

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

                        @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

                        אפילו קוד פשוט כזה לוקח לו להחזיר תשובה בין 0.9 ל1.5 שניות

                        האם אתה מתכוון גם באופן שהגליון ריק לגמרי מנתונים ונוסחאות?

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

                          @OdedDvir
                          0.9 - 1.5 שניות זה בלי שום גליון... בדיקה פשוטה של תנאי לוגי, והחזרת תשובה. תסתכל בקטע קוד שהבאתי.

                          Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                          טיפים

                          OdedDvirO Y.Excel.AccessY 2 תגובות תגובה אחרונה
                          0
                          • OdedDvirO מנותק
                            OdedDvirO מנותק
                            OdedDvir
                            השיב לצדיק תמים ב נערך לאחרונה על ידי OdedDvir
                            #13

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

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

                              @OdedDvir זה פרוייקט app script, הוא חי לעצמו ללא כל חוברת עבודה/גיליון.

                              מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                              בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

                                אולי להשתמש ב CacheService כדי לשפר את התגובות הבאות? זה לא בדיוק פותר את שורש הבעיה...

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

                                  @OdedDvir לא רלוונטי במקרה הזה, הפעולה צריכה להיות על הנתונים בזמן אמת, כמו כן לאיטיות המובנית שהדגמתי כאן עם קוד פשוט של request => response בלי שום קבלת נתונים מרוחקים, זה לא יעזור.
                                  אבל זה כלי שימושי לפעמים, תודה שהכרת לי אותו 🙂
                                  עריכה - השתמשתי בו עכשיו למשהו שחסך לי הרבה קומבינות בדרכים שהכרתי... תודה!

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

                                  Don’t comment bad code — rewrite it." — Brian W. Kernighan and P. J. Plaugher"
                                  טיפים

                                  תגובה 1 תגובה אחרונה
                                  1
                                  • Y.Excel.AccessY מנותק
                                    Y.Excel.AccessY מנותק
                                    Y.Excel.Access
                                    השיב לצדיק תמים ב נערך לאחרונה על ידי
                                    #17

                                    @צדיק-תמים אמר במהירות העבודה של גוגל סקריפט:

                                    @OdedDvir
                                    0.9 - 1.5 שניות זה בלי שום גליון... בדיקה פשוטה של תנאי לוגי, והחזרת תשובה. תסתכל בקטע קוד שהבאתי.

                                    כל פעולה של APP SCRIPT המתקשרת עם SHEETS לוקחת כזה זמן, לא משנה כמה היא פשוטה. ואפילו מאקרו פשוט של 'כתוב ב A1 "אא" ' יקח לו כזה זמן.

                                    -מה שאומר - לא יודע אם יש לזה פתרון אפשרי.

                                    Y.Excel.Access @ gmail.com

                                    dovidD ש 2 תגובות תגובה אחרונה
                                    0
                                    • dovidD מנותק
                                      dovidD מנותק
                                      dovid ניהול
                                      השיב לY.Excel.Access ב נערך לאחרונה על ידי
                                      #18

                                      @Y-Excel-Access לא קראת מה שכתבו, אין בכלל התקשרות לsheet.

                                      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                      בכל נושא אפשר ליצור קשר dovid@tchumim.com

                                      תגובה 1 תגובה אחרונה
                                      3
                                      • ש מנותק
                                        ש מנותק
                                        שמחה זו הסיסמא
                                        השיב לY.Excel.Access ב נערך לאחרונה על ידי שמחה זו הסיסמא
                                        #19

                                        @Y-Excel-Access
                                        מה שאומר שאין לזה אולי פתרון אפשרי בכתיבת הקוד, אבל כן יתכן ויש לזה פיתרון אפשרי עם תשלום ל google שיקצו עבור זה יותר משאבים כדי שיקח פחות זמן
                                        זו הייתה השאלה מתחילה ואולי מן הראוי להתמקד בדרך הזו אם יש מישהו שיכול לעזור

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

                                        dovidD תגובה 1 תגובה אחרונה
                                        0
                                        • dovidD מנותק
                                          dovidD מנותק
                                          dovid ניהול
                                          השיב לשמחה זו הסיסמא ב נערך לאחרונה על ידי
                                          #20

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

                                          מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                                          בכל נושא אפשר ליצור קשר dovid@tchumim.com

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

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

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

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