如何将Google Sheet导出为CSV并存储至指定网络驱动器?
解决方案:将Google Sheet导出的CSV保存到网络驱动器
Google Apps Script运行在云端,没有权限直接访问本地或网络驱动器的文件系统,因此无法通过GAS直接将文件保存到\\Location1\location2\location3。你需要结合本地脚本(如PowerShell)配合实现,以下是两种可行方案:
方案一:生成带权限的CSV下载链接,用本地脚本下载
修改GAS代码生成临时可下载链接,再通过本地脚本将文件下载到目标网络路径。
修改后的Google Apps Script代码
function getCsvDownloadUrl() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Sheet1"); var sheetId = sheet.getSheetId().toString(); var ssId = ss.getId(); // 构造带权限的CSV导出链接,access_token确保无需手动登录即可下载 var downloadUrl = `https://docs.google.com/spreadsheets/d/${ssId}/export?gid=${sheetId}&format=csv&access_token=${ScriptApp.getOAuthToken()}`; // 打印链接到日志,方便复制到本地脚本使用 Logger.log(downloadUrl); return downloadUrl; }
配套PowerShell脚本(本地运行)
将下载的CSV内容直接保存到网络驱动器:
# 替换为GAS生成的下载链接 $downloadUrl = "替换成你的CSV下载链接" # 目标网络驱动器路径 $savePath = "\\Location1\location2\location3\Sheet1.csv" # 下载并保存文件 Invoke-WebRequest -Uri $downloadUrl -OutFile $savePath
注意:access_token有效期约1小时,若需定时执行,可通过GAS触发器定时生成新链接,或配置Google OAuth长期令牌。
方案二:部署GAS为Web App,本地脚本请求获取CSV内容
将GAS部署为Web服务,让它直接返回CSV文本内容,再由本地脚本写入网络驱动器。
修改后的Google Apps Script代码(用于Web App)
function doGet() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Sheet1"); var sheetId = sheet.getSheetId().toString(); var ssId = ss.getId(); var requestConfig = { method: "GET", headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()} }; var exportUrl = `https://docs.google.com/spreadsheets/d/${ssId}/export?gid=${sheetId}&format=csv`; var csvContent = UrlFetchApp.fetch(exportUrl, requestConfig).getContentText(); // 返回CSV格式内容,供本地脚本获取 return ContentService.createTextOutput(csvContent) .setMimeType(ContentService.MimeType.CSV); }
Web App部署步骤
- 在GAS编辑器中点击「部署」→「新部署」
- 类型选择「Web应用」
- 执行权限选「我」,访问权限根据需求选「任何人,甚至匿名」或指定用户
- 部署后复制生成的Web App URL
配套PowerShell脚本
# 替换为你的Web App URL $webAppUrl = "替换成你的Web App地址" $savePath = "\\Location1\location2\location3\Sheet1.csv" # 请求Web App获取CSV内容并保存 Invoke-RestMethod -Uri $webAppUrl -OutFile $savePath
补充说明
- 若需定时自动执行,可给GAS设置时间触发器,同时用Windows任务计划程序定时运行本地脚本
- 确保运行本地脚本的用户账号对目标网络路径有读写权限
内容的提问来源于stack exchange,提问作者Subaru Spirit
相关产品推荐
相关产品推荐

