העלאת קובץ מגוגל דרייב למערכת דרך api
-
איפה אתה מצהיר על המשתנה
token
? -
@amp-Software-0 בפונקצייה נפרדת, כפי שאמרתי, הטוקן תקין לגמרי
-
@האדם-החושב
באותו תחום?
השגיאה מראה שחסר לך את הטוקן, אז תלך על הכיוון הזה
מה מודפס לך ב logger.log(token) ? -
@amp-Software-0 הטוקן עובד לי בהעלאת קבצי טקסט, שליחת צינתוקים, עריכת קמפיינים ועוד
ב logger.log(token) מודפס לי הטוקן -
@האדם-החושב יכול להיות שאתה שולח את הטוקן בget בעוד הבקשה היא בפוסט?
-
@אביי-ורבא אני לא כ"כ מבין בזה, אבל הטוקן נמצא בdata_3
let data_3 = { 'token': token,'path': "ivr2:/0/M1012.wav", 'convertAudio': 1, autoNumbering: false, tts:0,'upload': blob }
שנשלח בפוסט למיטב הבנתי
let options_3 = { 'method': 'post','headers': headers, 'payload': data_3};
-
@האדם-החושב
תנסה לצרף את הטוקן url עצמו כ GET כדי לבודד את הבעיה:let request_3 = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}UploadFile?token=` + token, options_3))
-
@amp-Software-0 כתב בהעלאת קובץ מגוגל דרייב למערכת דרך api:
- token
עזר לטוקן, אבל עכשיו אני נתקל בשגיאה של הנתיב:
{ responseStatus: 'ERROR',
message: 'path is required',
messageCode: 109,
yemotAPIVersion: 6,
success: false } -
@האדם-החושב
אוקי, אז הצלחנו לבודד את הבעיה
הדרך שבה אתה שולח את הנתונים אינה תקינה ולכן הפרמטרים לא נשלחו,
אתה יכול כמובן לשלוח את הכל דרך ה GET אבל הקובץ עצמו חייב להישלח ב bodyתנסה את זה:
function UploadFile_to_yemot(){ let file_link = SpreadsheetApp.getActiveSheet().getRange('VoiceMail!B6').getValue(); let fileid = file_link.split(/\/file\/d\/([^\/]+)/)[1]; console.log (fileid) let file = DriveApp.getFileById(fileid); let blob = file.getBlob(); let headers = {'Content-type': 'multipart/form-data'}; var formData = new FormData(); formData.append('token', token); formData.append('path', "ivr2:/0/M1012.wav"); formData.append('convertAudio', 1); formData.append('autoNumbering', false); formData.append('tts', 0); formData.append('upload', blob); let options_3 = { 'method': 'post','headers': headers, 'payload': formData}; let request_3 = JSON.parse(UrlFetchApp.fetch(`${url_yemot_api}UploadFile`, options_3)) console.log(request_3) }
-
@amp-Software-0
ReferenceError: FormData is not defined -
@האדם-החושב
נכון, זה לא קיים בגוגל סקריפט..
תנסה אולי לשלוח את כל הפרמטרים ב GET ותשלח את הקובץ ישירות ב payload -
@האדם-החושב נסה להשתמש עם זה:
(ההדפסות ללוג מכוונות)
function sendToYemot(file, path) { let convert = '1'; let autoNumbering = 'false'; Logger.log(`yemot: path=ivr2:/${path}, convertAudio=${convert}, autoNumbering=${autoNumbering}`) let data = { 'token': token_yemot, 'path': `ivr2:/${path}`, 'convertAudio': convert, 'autoNumbering': autoNumbering, 'contents': file }; let options = { 'method': 'post', 'payload': data }; let request = UrlFetchApp.fetch(`${url_yemot_api}UploadFile`, options); let yemotJson = JSON.parse(request.getContentText()); Logger.log("סטטוס התגובה: " + request.getResponseCode() + "\nוטקסט התגובה הוא: " + request.getContentText()) if (request.getResponseCode() == 200 && yemotJson.responseStatus == 'OK') { return true; } else { errorMessages.push(`שגיאה: העלאת הקובץ ${file.getName()} לנתיב ivr2:/${path} עם הפרמטרים convertAudio=${convert}, autoNumbering=${autoNumbering} נכשלה. להלן טקסט התגובה: ${request.getResponseCode()}, ${request.getContentText()}`); return false; } }