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

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

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

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

מתוזמן נעוץ נעול הועבר תוכנה
23 פוסטים 5 כותבים 424 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    שמחה זו הסיסמא
    השיב ל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
                                  • ש מנותק
                                    ש מנותק
                                    שמחה זו הסיסמא
                                    השיב לdovid ב נערך לאחרונה על ידי
                                    #21

                                    @dovid
                                    מה הכוונה פונקציית ענן ?

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

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

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

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

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

                                        @dovid אני רק רציתי להבין מה פירוש המילים שלך
                                        פונקציית ענן זה פלטפורמה מקבילה לapp script ? או שזה פונקציה לכתוב בapp script או משהו אחר ?

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

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

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

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

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