המשך: העלאת קבצים גדולים לגוגל דרייב באמצעות גוגל סקריפט
-
תגובה: העלאת קבצים גדולים לגוגל דרייב API
כתבתי את הקוד הזה, (המקטע של העלאה המתחדשת מכאן הקרדיט ל @צדיק-תמים) אבל הוא לא עובד, מדיבוג עולה שהקובץ נכנס לblobfile אבל במהלך העלאה עצמה משהו משתבש ובסופו של יום הקובץ לא מגיע לדרייב, איפה טעיתי?
function upload_to_drive() { let myfile = "[file]" let blobfile = myfile.getBlob(); blobtype = blobfile.getContentType(); var fileId1 = blobfile; //id of the first file var fileId2 = "1eJOyc4tGv4a71aEwnJiSh8NVENRCZ2XI"; //id of the second file var filename = "merged.pdf"; //name of the final merged file var mimeType = MimeType.PDF; //Mime type of the merged file //declare the end point const url = "https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable"; //Send the request //Method to be used is Post during initiation //No file is to be sent during initiation //The file name and the mime type are sent const res1 = UrlFetchApp.fetch(url, { method: "post", contentType: "application/json", payload: JSON.stringify({ name: filename, mimeType: mimeType }), headers: { authorization: "Bearer " + ScriptApp.getOAuthToken() } }); const location = res1.getHeaders().Location; var file = blobfile; //get the first file var data = myfile.getBlob().myfile.getBytes(); //get its contents in bytes array //Method used is PUT not POST //Content-Range will contain the range from starting byte to ending byte, then a slash //and then file size //bytes array of file's blob is put in data var params = { method: "put", headers: { 'Content-Range': `bytes 0-524287/687627` }, payload: data, muteHttpExceptions: true }; //Request using Resumable session URI, and above params as parameter var result = UrlFetchApp.fetch(location, params); /* //Almost same as Step 4 (a) //The thing that changes is Content Range file = DriveApp.getFileById(fileId2); data = file.getBlob().getBytes(); params = { method : "put", headers : { 'Content-Range' : `bytes 524288-687626/687627` }, payload : data, muteHttpExceptions : true }; result = UrlFetchApp.fetch(location, params); */ }
-
@משתמש-תמים אמר בהמשך: העלאת קבצים גדולים לגוגל דרייב באמצעות גוגל סקריפט:
@אביי אני יודע שנטפרי מגבילים את הפונקציה הזו (לא יודע בדיוק עד כמה אבל יש הגבלה) אם יש לך נטפרי תבדוק בהקלטה אם נחסם משהו.
הם אכן מגבילים אבל זה לא קשור, נטפרי מונעים שמירה של קובץ עם פונקציות מסוימות, אבל הם לא יכולים להפריע לריצה של קוד שכבר קיים.
אגב, בעניין נטפרי אני הצעתי להם שישדרגו את החסימה לרק עם כתובת הURL עצמה חסומה בנטפרי, התשובה שקיבלתי שזה דורש פיתוח ואין הרבה אנשים שצריכים את זה...