שלום וברכה
אני מנסה לעלות קובץ למערכת דרך גוגל סקריפט אני משתמש בקוד הבא
let url_yemot_api = `https://www.call2all.co.il/ym/api/`;
function test_token() {
let token_yemot = SpreadsheetApp.getActiveSheet().getRange('settings!B6').getValue();
try {
let req = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}GetSession?token=${token_yemot}`));
Logger.log("test_token.req=" + req.responseStatus);
if (req.responseStatus === 'OK') {
Logger.log("it's ok");
} else {
Logger.log("Token is not valid, attempting to login again.");
login_token(); // קורא שוב לפונקציה login_token לקבלת טוקן חדש
}
} catch (e) {
Logger.log("Exception: " + e.message);
login_token(); // אם קרה שגיאה בביצוע הבקשה, ננסה להתחבר מחדש
}
}
function login_token() {
let user = SpreadsheetApp.getActiveSheet().getRange('settings!B2').getValue();
let password = SpreadsheetApp.getActiveSheet().getRange('settings!B3').getValue();
let req;
let counter = 0;
while (req === undefined || req.responseStatus !== "OK") {
req = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}Login?username=${user}&password=${password}`));
Logger.log(req.responseStatus);
counter++;
if (counter >= 5) {
break;
}
}
if (counter >= 5) {
let recipient = Session.getActiveUser().getEmail();
let fileName = SpreadsheetApp.getActiveSheet().getParent().getName();
let fileUrl = SpreadsheetApp.getActiveSheet().getParent().getUrl();
let owner = SpreadsheetApp.getActiveSheet().getParent().getOwner().getEmail();
return;
}
Logger.log("req.token=" + req.token);
SpreadsheetApp.getActiveSheet().getRange("settings!B6").setValue(req.token);
}
function uploadFileToServer() {
// בדוק אם הטוקן תקף לפני שליחת הקובץ
test_token();
let token_yemot = SpreadsheetApp.getActiveSheet().getRange('settings!B6').getValue();
// אם הטוקן לא תקף, הפונקציה test_token() צריכה להוציא טוקן חדש
if (!token_yemot) {
Logger.log("Token is not valid, cannot upload file.");
return;
}
// פרטי הקובץ לשליחה
const fileId = SpreadsheetApp.getActiveSheet().getRange('settings!B4').getValue(); // מזהה הקובץ בגוגל דרייב
const uploadPath = SpreadsheetApp.getActiveSheet().getRange('settings!B5').getValue(); // נתיב ושם קובץ בשרת
// אפשרות נוספת להוסיף פרמטרים נוספים במקרה הצורך
const convertAudio = 1; // המרת אודיו לפורמט WAV
const autoNumbering = true; // האם להפעיל מיספור אוטומטי (במקרה שה-API תומך בכך)
const tts = 0; // הצהרה על קובץ tts
try {
// שליפת הקובץ מ-Google Drive
const file = DriveApp.getFileById(fileId);
const blob = file.getBlob();
// שליחת הקובץ לשרת עם הטוקן ופרמטרים נוספים
const uploadUrl = `${url_yemot_api}UploadFile?token=${token_yemot}`; // שליחת הטוקן כ-parameter ב-URL
const uploadPayload = {
path: uploadPath, // נתיב היעד בשרת
convertAudio: convertAudio, // המרת האודיו לפורמט WAV
autoNumbering: autoNumbering, // הוספת מיספור אוטומטי (אם נדרש)
File: blob // הקובץ עצמו
};
const uploadOptions = {
method: "post",
headers: {
"Authorization": `Bearer ${token_yemot}` // שליחת הטוקן כ-Bearer Token ב-header
},
payload: uploadPayload,
contentType: "multipart/form-data"
};
const uploadResponse = UrlFetchApp.fetch(uploadUrl, uploadOptions);
const uploadData = JSON.parse(uploadResponse.getContentText());
if (uploadData.responseStatus === "OK") {
Logger.log("הקובץ הועלה בהצלחה! נתיב: " + uploadData.path);
} else {
Logger.log("שגיאה בהעלאת הקובץ: " + uploadData.message);
}
} catch (e) {
Logger.log("שגיאה: " + e.message);
}
}
והתגובה שאני מקבל זה
path is required
הבנתי שהבעייה זה בהגדרת הנתיב
אבל הנתיב מוגדר כמו שצריך
שיחקתי עם זה קצת ושום דבר לא עזר
אשמח לקבל את הכוונת חברי הפורום
תודה רבה