Back to Templates
This lightweight Google Apps Script acts as a server endpoint that receives a file URL (from n8n
), downloads the file, uploads it to your specified Google Drive folder, and responds with the file’s metadata (like Drive file ID and URL). This is useful for large video/audio files that n8n
cannot handle directly via HTTP Download nodes.
DriveUploader
Replace the default Code.gs
content with the following (your custom script):
function doPost(e) {
const SECRET_KEY = 'your-strong-secret-here'; // Set your secret key here
try {
const data = JSON.parse(e.postData.contents);
// 🔒 Check for correct secret key
if (!data.secret || data.secret !== SECRET_KEY) {
return ContentService.createTextOutput("Unauthorized")
.setMimeType(ContentService.MimeType.TEXT);
}
const videoUrl = data.videoUrl;
const folderId = 'YOUR_FOLDER_ID_HERE'; // Replace with your target folder ID
const folder = DriveApp.getFolderById(folderId);
const response = UrlFetchApp.fetch(videoUrl);
const blob = response.getBlob();
const file = folder.createFile(blob);
file.setName('uploaded_video.mp4'); // You can customize the name
return ContentService.createTextOutput(file.getUrl())
.setMimeType(ContentService.MimeType.TEXT);
} catch (err) {
return ContentService.createTextOutput("Error: " + err.message)
.setMimeType(ContentService.MimeType.TEXT);
}
}
To allow authorized post requests to your script only, we need to generate a secret key from aany reliable key generator.
const SECRET_KEY = 'your-strong-secret-here'; // Set your secret key here;
/folders/
https://drive.google.com/drive/u/0/folders/1Xabc12345678defGHIJklmn
var folderId = "1Xabc12345678defGHIJklmn";
Upload from URL to Drive
POST
JSON
{
"videoUrl": "https://example.com/path/to/your.mp4",
"secret": "your-strong-secret-here"
}
videoUrl
: The file download URLsecret
: The generated and set up secret key