如何下载GSheet存储URL对应的CSV文件到Google Drive,求Google脚本
实现方案说明
该脚本可直接读取你Google Sheet Sheet1 G2单元格存储的受保护URL,使用你运行脚本的Google账号身份发起认证请求,下载CSV内容后直接保存到你的Google Drive中,无需额外输入登录信息。
完整脚本代码
function downloadCsvToDrive() { // 读取Sheet1 G2单元格的目标URL const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1'); const targetUrl = sheet.getRange('G2').getValue().toString().trim(); if (!targetUrl) { SpreadsheetApp.getUi().alert('G2单元格未填写URL,请检查后重试'); return; } // 配置带身份验证的请求参数 const requestOptions = { method: 'GET', headers: { Authorization: 'Bearer ' + ScriptApp.getOAuthToken() }, muteHttpExceptions: true, followRedirects: true }; try { const response = UrlFetchApp.fetch(targetUrl, requestOptions); const responseCode = response.getResponseCode(); if (responseCode !== 200) { SpreadsheetApp.getUi().alert(`请求失败,错误码:${responseCode},请确认账号权限和URL有效性`); return; } const csvContent = response.getContentText(); // 可自定义文件名,当前默认添加时间戳避免重名 const fileName = `CSV导出_${new Date().getTime()}.csv`; // 替换为你要保存的目标文件夹ID,不修改则默认保存到Drive根目录 const targetFolderId = 'YOUR_TARGET_FOLDER_ID'; let saveFolder; if (targetFolderId && targetFolderId !== 'YOUR_TARGET_FOLDER_ID') { saveFolder = DriveApp.getFolderById(targetFolderId); } else { saveFolder = DriveApp.getRootFolder(); } saveFolder.createFile(fileName, csvContent, MimeType.CSV); SpreadsheetApp.getUi().alert('CSV文件下载完成,已保存到Google Drive'); } catch (error) { SpreadsheetApp.getUi().alert(`运行异常:${error.message}`); } }
使用步骤
- 打开存储目标URL的Google Sheet,点击顶部菜单栏「扩展程序」>「Apps脚本」进入脚本编辑器
- 清空编辑器默认的示例代码,将上述代码完整粘贴进去
- 如需保存到指定Drive文件夹,将代码中
YOUR_TARGET_FOLDER_ID替换为目标文件夹的ID(文件夹ID为浏览器打开文件夹后,URL中folders/后面的字符串) - 点击保存按钮给项目命名,之后点击运行按钮,首次运行需按提示完成账号授权(遇到未验证应用提示时,点击「高级」>「前往[你的项目名]」即可继续授权)
- 运行完成后即可在目标位置找到下载的CSV文件
异常排查说明
若返回401/403错误:请先确认你当前登录的Google账号可以在浏览器中正常访问G2单元格的URL,确认权限正常后再运行脚本
若保存的文件内容异常:请检查G2单元格的URL是否正确,确认该URL直接访问时返回的是标准CSV格式内容
内容的提问来源于stack exchange,提问作者khursheed Ahmed
相关产品推荐
相关产品推荐

