הקראת זמני התפילות מגוגל שיטס
-
יש לי טבלה בשיטס אם זמני התפילות כל יום אני רוצה לעשות שלוחה בקו לזמני תפילות היום הקש 1 למחר 2 ליום שלישי 3 וכו' מה ההגדרות שצריך לשים בשלוחה ומה צריך לשים בגוגל שיטס
ראיתי את זה
@אביי-ורבא פרסמת פה משהו כזה אבל לא מצאתי איפה ההורדה אם זה עדיין פעיל אשמח לקבל את הקובץ -
תנסה את הקוד הבא בסקריפט, כשבתא J1 הטוקן, ובJ2 נתיב השלוחה
function uploadTextByDay() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getActiveSheet(); // כתובת ה-API const apiUrl = "https://www.call2all.co.il/ym/api/UploadTextFile"; // שליפת הטוקן מתא J1 ונתיב השלוחה מתא J2 const token = sheet.getRange("J1").getValue(); const extensionPath = sheet.getRange("J2").getValue(); if (!token) { SpreadsheetApp.getUi().alert("נא להזין טוקן בתא J1"); return; } if (extensionPath === "") { SpreadsheetApp.getUi().alert("נא להזין נתיב שלוחה בתא J2"); return; } // בניית שם הקובץ עם הנתיב הדינמי const fileName = "ivr2:" + extensionPath + "/000.tts"; // זיהוי היום בשבוע (0=ראשון, 1=שני... 6=שבת) const now = new Date(); const dayOfWeek = now.getDay(); const column = dayOfWeek + 1; const lastRow = sheet.getLastRow(); if (lastRow < 1) return; const range = sheet.getRange(1, column, lastRow, 1); const valuesArray = range.getValues(); // איחוד התאים - כל תא בשורה חדשה const contents = valuesArray .map(row => row[0]) .filter(cell => cell !== "" && cell !== null) .join("\n"); if (!contents) { Logger.log("אין תוכן בעמודה של היום הנוכחי"); return; } const payload = { 'token': token, 'what': fileName, 'contents': contents }; const options = { 'method': 'post', 'payload': payload, 'muteHttpExceptions': true }; try { const response = UrlFetchApp.fetch(apiUrl, options); const responseText = response.getContentText(); Logger.log("תגובת השרת: " + responseText); ss.toast("הקובץ הועלה בהצלחה לנתיב: " + fileName); } catch (e) { Logger.log("שגיאה בחיבור לשרת: " + e.message); } } -
@BEN-ZION
זה ערוך שכל עמודה היא יום, ובכל יום לוקח את הטקסט של אותו היום, ומעלה לשלוחה בתור קובץ טקסט בשם 000 וכך בכל יום ישמיע את היום שלו.
בנוסף תגדיר טריגר שיריץ את הסקריפט בכל יום בשעה שתרצה וכך יחליף את הטקסט. -
@אA לא הבנתי את המבנה של העמודות ואיך יעבוד ההשמעה
זה יחליף מתי שאני יגדיר בסקריפט?
אם אני ירצה לשמוע מחר את זמני התפילות של היום? -
@BEN-ZION
אתה תגדיר את הטריגר לפי הזמנים שתרצה שיעדכן.
כרגע, מוגדר בקוד שיבדוק את היום ובכל יום יקריא את העמודה של אותו היום.
תוכל לפתוח סקריפט נוסף שיקריא את כל עמודה מהשלוחה ממנה נשלחה כך שתוכל לעשות תפריט לשמיעת הזמנים לפי ימים. -
@אA מה ההגדרות בשלוחה?
-
@BEN-ZION
שלוחת API
ובכתובת השלוחה את הפריסה שקיבלת בסקריפט -
@אA רק היום התפניתי לעבוד על זה דרך איפה זה משמיע את הטקסט? לאן זה שולח את הקובץ
אני רוצה לעשות שאלה ב API לשמיעת תפילות של היום הקש 1 לתפילות מחר 2 לשיש הקרוב 3 לשבת הקרובה 4
ואז אני יעשה 4 שלוחות שבתוך כל אחת יהיה ההגדרות האלו
לתפילות שחרית 1
תפילות מנחה 2
תפילת ערבית 3
כל התפילות 4 -
אני לא ממש הבנתי מה הקוד עושה אני שם פה את הקישור לגיליון שהגבאי נתן לי גיליון 3 איך אני עושה בצורה הכי פשוטה שזה יעבוד כמה שלוחות לעשות ואיך
-
@BEN-ZION
אני בנטפרי אז אני לא יכול לבדוק האם הסקריפט עובד.
אם אתה יכול אז תיכנס ללשונית תוספים > Apps Script
בחלון שיפתח תמחק את כל מה שכתוב בשורות ותדביק את זהfunction uploadAllColumnsSequentially() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var baseUrl = "https://www.call2all.co.il/ym/api/UploadTextFile"; // משיכת הטוקן מתא J1 var token = sheet.getRange("J1").getValue(); if (!token) { Browser.msgBox("נא להזין טוקן בתא J1"); return; } var lastColumn = sheet.getLastColumn(); var lastRow = sheet.getLastRow(); var successCount = 0; // לולאה שעוברת על העמודות אחת אחרי השנייה for (var col = 1; col <= lastColumn; col++) { // דילוג על עמודה J (הטוקן) if (col == 10) continue; // קריאת נתיב השלוחה מהתא הראשון (שורה 1) var extensionPath = sheet.getRange(1, col).getValue(); // אם התא הראשון בעמודה ריק - עוברים לעמודה הבאה if (!extensionPath || extensionPath === "") continue; // בניית הנתיב המלא לקובץ var fullPath = "ivr2:1/" + extensionPath + "/000.txt"; // איסוף הנתונים מהעמודה (משורה 2 ומטה) var range = sheet.getRange(2, col, lastRow, 1); var values = range.getValues(); // חיבור הטקסט - כל תא בשורה חדשה var contents = values.map(function(row) { return row[0]; }).filter(function(cell) { return cell !== "" && cell !== null; }).join('\n'); // אם העמודה ריקה מתוכן (מתחת לכותרת), מדלגים if (contents.length === 0) continue; // הגדרת השליחה ל-API var payload = { "token": token, "what": fullPath, "contents": contents }; var options = { "method": "post", "payload": payload, "muteHttpExceptions": true }; // ביצוע השליחה והמתנה לתשובה (סינכרוני) try { var response = UrlFetchApp.fetch(baseUrl, options); var result = JSON.parse(response.getContentText()); if (result.responseStatus === "OK") { console.log("הצלחה: עמודה " + col + " (נתיב " + fullPath + ") הועלתה."); successCount++; } else { console.log("שגיאה בעמודה " + col + ": " + result.message); } // השהייה קלה של חצי שנייה בין שליחה לשליחה לביטחון (אופציונלי) Utilities.sleep(500); } catch (e) { console.log("שגיאה חריגה בעמודה " + col + ": " + e.toString()); } } Browser.msgBox("התהליך הסתיים.\nמספר עמודות שעלו בהצלחה: " + successCount); }ואז תחזור לשיטס ותכניס את הנתונים בעמודות.
כל עמודה היא שלוחה שונה.
בתא הראשון בעמודה תכניס את הנתיב של השלוחה אליה יעלה.
בנוסף בתא j1 תכניס את הטוקן של המערכת.
בסיום תחזור לסקריפט ופשוט תפעיל את הסקריפט בלחיצה על כפתור ההפעלה.
ההודעות יעלו לשלוחות בתור קובץ טקסט בשם 000 וכך המאזינים ישמעו את הנתונים.אני לא יכול לבדוק את זה אז או שתנסה לבד או שתפתח את זה בנטפרי ואני אנסה לעזור לך.