-
כעצתו של @chv כאן
תגובה: הרצת סקריפט מ Googek sheets שיפעיל קישוריש לי קובץ Googek sheets שמתעדכן באופן ידני ע"י כל מיני אנשים
בניתי קישור שכשמקישים עליו זה שולח את הנתונים בAPI לימות המשיח
אבל בעצם זה לא משנה מה זה עושה כשמקישים עליו, כי העיקרון הוא שצריך פשוט להקיש עליו מי שבכל אופן רוצה להבין כתבתי כאןהבעיה היא, שאני רוצה שזה ישלח אוטומטי כל כמה דקות,
ובקיצור יש לי קישור מוכן בתוך טבלה של Googek sheets ואני רוצה "לדמות הקשה" על הקישור כל כמה דקות@OdedDvir
ניסתי להשתמש במה שכתבת כאן וזה החזיר שגיאה כמו שכתבתי כאן -
@פשוט-אבל-תותח אוקיי עכשיו טיפה יותר ברור (עדיין היית יכול להתאמץ קצת יותר ולכתוב יותר ברור אבל ניחא)
ויבואר בפשטות לפני שמתחילים פרקטיקה:
אתה יצרת בעצם לחצן אינטראקטיבי (היינו לחצן שכאשר משתמש לוחץ עליו בדפדפן - נפתח לו כתובת מסוימת בטאב חדש וכדו׳) והגדרת בדרך מסוימת (שלא פירטת) מהי הכתובת שתיפתח בלחיצה עליו.
כאשר אתה רוצה לעבוד מול גוגל סקריפט - עליך להבין שגוגל סקריפט לא ׳לוחצת על כפתורים׳ בטבלה שלך. וגם אם היא עושה את זה אם תגיד לה: לא זו הדרך לגרום לגוגל סקריפט לבצע בקשת http לכתובת שאתה רוצה.
בגוגל סקריפט יש דרכים לשלוח בקשת http (ועי׳ בתיעוד) ועליך לעבוד איתם.אוקיי זה הובן.
עכשיו הנושא הוא - איך הגוגל סקריפט אמור לקבל את הפרמטר הנחוץ של לאיזו כתובת לשלוח את הבקשה (וגם אם אתה רוצה - איך לקבל את התשובה ולשמור אותה ולנתח אותה ולהתריע לך על שגיאות שהתקבלו בתשובה)
כיוון שלא כתבת במפורש איך בדיוק הכפתור הזה עובד - אולי תפרט באמת. איך זה אמור לדעת לאיזו כתובת לשלוח - וככה יוכלו להדריך אותך איך ליצור פונקציה בגוגל סקריפט, שמקבלת את הערך הזה - ושולחת בקשת http עם פרמטר url על פי הערך הזה. (בצורה אוטומטית כל כמה דקות וכו׳)
-
@פשוט-אבל-תותח כפי שהבנתי, אתה שולח בקשה ל-API דרך שורת הכתובת בלבד, בלי BODY. לכן, לכאורה הקוד הבא יספיק:
function openUrl( ){ var url =SpreadsheetApp.getActiveSheet().getRange('K4').getValue(); var response = UrlFetchApp.fetch(url); //תוכל גם להציג את התגובה אם תרצה, על ידי השורה הבאה, או לנתח אותה כרצונך Logger.log(response.getContentText()); }
-
@OdedDvir שוב פעם יישר כח אבל זה עדיין מחזיר שגיאה
@chv תאמין לי שמה שלא פירטתי לא נובע מעצלות, אני לא כ"כ מבין בדברים האלו ולכן אני לא מבין את השפה, ולכן גם את התשובה שלך לא כ"כ הבנתי, חוץ מזה שאני עובד בדרך לא נכונה.
כתבת גם שלא כתבתי במפורש איך הכפתור עובד, אני לא רציתי לכתוב יותר מדאי כי זה היה נראה לי סתם מבלבל לכתוב יותר מדאי (כי הקישור עובד כשלוחצים עליו, אבל כיון שאני מבין עכשיו שזה כן נצרך אני ינסה לפרט יותר:
כתבתי את הנסחא הבאה בתא K4
="https://private.call2all.co.il/ym/api/UploadTextFile?token"&"="&"0733000000:1234&what"&"=ivr2:/1/IdListMessage.ini&contents="&L1
כך שלפני מה שכתוב בתא L1 יהיה את הכתובת המליאה לשליחה של הנתונים, ותא L1 אמור להשלים את העבודה = לכתוב את התוכן של קובץ ה
ini
בתא L1 כתוב ככה (כדי לחבר את כל התוכן של תאים L2 עד L1000 ברצף
=Concatenate(L2:L1000)
בכל אחד מהתאים כתוב נוסחה שתיצור את הכיתוב שאמור להישלח לדוג' הנוסחא שכתובה ב L2 היא
=if(H2="","","%0A"&B2&"="&if(A2="LY","f-"&"LY",if(A2="AA","f-"&"AA",if(A2="DL","f-"&"DL",if(A2="UL","f-"&"UL","t-"&A2))))&".f-"&"000.d-"&B2&".f-001."&"date-"&C2&".f-002"&".n-"&I2&".n-"&J2&".f-H1")
הטקסט שיצא מהנוסחא הוא
%0A1213=f-LY.f-000.d-1213.f-001.date-02/07/2021.f-002.n-18.n-35.f-H1
התוצאה: קובץ
IdListMessage.ini
שנמצא בשלוחה 1 במערכת נוצר וקיבל את הכיתוב1213=f-LY.f-000.d-1213.f-001.date-02/07/2021.f-002.n-18.n-35.f-H1
מכיון שההגדרות בשלוחה זו הם עם המודול הזה
מי שיכנס עם זיהוי 1213 ישמע רצף של הודעות תאריך ושעה וכואם עדיין אתה רוצה תוספת פירוט, הדבר היחיד שלא מספיק פירטתי הוא הפירוש של הנוסחא ב L2
אז בבקשהif(H2="",""
אם תא H2 = ריק תשאיר גם את התא הזה (L2) ריק
,"%0A"&B2&"="
אם התא אינו ריק אלא כתוב שם משהו תכתוב בתא הנוכחי (L2) את הטקסט
%0A
שזה אומר לרדת שורה ואח"כ תכתוב שם את מה שכתוב בתאb2
ואח"כ תכתוב=
שזה בעצם אומר למערכת לזיהוי שכתוב בתא B2 תעשה את הפעולות הבאות, לאחמ"כ יש נוסחא שאמורה לדעת איזה הודעות להשמיע.ושוב, כשאני מקיש על הקישור זה שולח את זה נפלא! אבל לעשות את זה באופן אוטומטי זה לא עובד
אני מאמין שהארכתי, אבל זה בגלל שאני לא מבין מה מיותר ומה לא. ובכל אופן תודה רבה לכל העוזרים והמסייעים
-
@פשוט-אבל-תותח אמר בשואל בצורה מסודרת יותר הפעלת קישור באופן קבוע מ Googek sheets:
זה עדיין מחזיר שגיאה
פירטת מצוין את השאלה, אבל לא פירטת מה השגיאה. מה התגובה שקיבלת?
-
@פשוט-אבל-תותח תשכח מכל שאר הפוסטים שלי בעבר... כשאתה פותח את עורך הסקריפטים, כברירת המחדל נוצרת לך פונקציה בשם MyFunction(). שנה את שם הפונקציה ל-openURL. ובגוף הפונקציה תדביק את הקוד שנתתי לך כאן למעלה (משורה 2 עד 6).
-
@odeddvir כל הכבוד על הסבלנות! ממש יישר כח, אבל עדיין (כך עשיתי גם קודם)
ובמילים
function openURL() { var url =SpreadsheetApp.getActiveSheet().getRange('K4').getValue(); var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); }
השגיאה
ReferenceError: openURL is not defined
-
@פשוט-אבל-תותח הקוד תקין. הנה דוגמא:
יש לך שגיאה אחרת. האם הסקריפט כתוב בגליון הנכון? -
@odeddvir
פתחתי קובץ במיוחד בשביל הניסוי אז יש שם רק גיליו אחדתבקש בקשה לעריכה ואפתח לך
-
@פשוט-אבל-תותח כתובת URL מוגבלת עד 2048 תוים. אם המחרוזת ארוכה יותר מזה היא תיחתך. אם ברצונך לחפש פתרון - לפי הכללים כדאי לפתוח נושא חדש.
-
@פשוט-אבל-תותח אם יש לך אפשרות לחלק את השליחה לכמה מנות קטנות של מחרוזות קצרות - אולי תוכל לעקוף את הבעיה.
-