פונקציית SHEETS בתוך APP SCRIPT
-
האם אפשר לקבל את ערכי פונקציית GOOGLE SHEETS בתוך הקוד של APP SCRIPT?
כלומר, אני יודע שאפשר לכתוב טקסט המכיל פונקציה קיימת של SHEETS בתוך תא ואחרי שהפוקנציה מחושבת בSHEETS אפשר לקבל את הערכים חזרה לAPP SCRIPT ע"י GETVALUES. אבל זה מצריך מיקום פיזי בתוך הגליונות.
האם אפשר פשוט לתת טקסט שמכיל פונקציה של SHEETS וה JS יבין לבד לחשב את הפונקציה ולתת אותה כ ARRAY? בלי צורך של שום אינטרקציה עם הSHEETS עצמו
-
לא אפשרי.
ראה למשל: https://stackoverflow.com/q/26805309/1271037
מוזכר שמה שבאקסל זה כן אפשרי. -
:(טוב. אז אתן את הפתרונות שלי לבינתיים.
ראשית אסביר את הצורך:
פונקציות SHEETS יש בהם מעלה מבחינות מסוימות על JS:- הם צפויות מאוד, וכל הזמן יש תוצאה ברורה לערך הנצרך. משא"כ בJS שהיא שפה לא מקומפלת, אז יש התמודדות כל הזמן עם באגים אפשריים.
- הם עוקבות אחרי מיקומי התאים - ההפניות מתעדכנות, כך שאין סכנה שבשינוי שם גליון או מיקום תא הכל יקפוץ פתאום או יותר גרוע - יחשב בטעות בלי שנדע.
- אין בהם הגבלת זמן - בשונה מהגבלות הזמן של APP SCRIPT ל30 שניות לפעולה בודדת ושעה וחצי לכל יום לכל הפרויקטים של כתובת המייל הנוכחית (כשיש הרבה פרויקטים, או כשמתמשים בAPP SCRIPT למשהו אחר זה מגביל).
הצורך בשימוש ב JS:
- פונקציות SHEETS כשהם מתחילות להיות ברמה גבוהה, הקובץ נטען לאט יותר. עד כדי סכנה מפני קפיאת הקובץ.
- בייבוא על ידי IMPORTRANGE , אם החישוב הקודם היה באמצעות פונקציות זה נחשב כבד יותר, ואז מהר מאוד נגיע לבאג של גוגל המעצבן שפתאום ללא התראה, גם כשהקובץ סגור, הפונקציה הופכת להיות ERROR.
אז הפתרון שלי:
יצרתי פונקציה מותאמת אישית (בתוך SHEETS - לא קשור לAPP SCRIPT) הכותבת תווים מיוחדים וממוקמת בגליון נפרד, שם כל אירוע קורא אותה.קראתי לה SETVALUES והיא מחשבת את הפונקציות ופורסת את מערך התוצאה בשרשור ארוך בתא בו היא נמצאת, שאותו הJS קורא ומיישם.
הבעיה בפתרון שלי שמגבלות התאים הם 50,000 תווים לכל תא, כך שבמערכים גדולים - שעבורם השימוש, יהיה צורך לפצל וכו'... כך שעכ"פ זה גם לא פתרון מושלם.
נשמח לשמוע על רעיונות נוספים.