google-apps-script - Google Apps 脚本如何将特定工作表导出为 csv 格式
问题描述
在 MIT Inventor II 中,我使用 web 组件通过 google apps 脚本的 doGet() 获取 SpreadsheetID 和 SheetID。获得信息后,我使用另一个 Web 组件设置 url,如下所示,以从特定工作表中获取 csv 格式的文件。我的问题是如何让 GAS 获取 SpreadsheetID 和 SheetID 然后一次导出 csv 文件,这样我就不必在 Inventor 端使用 2 个 Web 组件?
GAS代码如下。这是为了“返回”电子表格 ID 和表格 ID。
function doGet(e) {
filename = e.parameter.account;
fileList = DriveApp.getFilesByName(filename);
while (fileList.hasNext()) {
var fileID = fileList.next().getId()
}
var file = SpreadsheetApp.openById(fileID) ;
sheet = file.getSheetByName("Message").activate()
var messageID = sheet.getSheetId();
return ContentService.createTextOutput([fileID,messageID]);
获得 SpreadsheetID 和 SheetID 后,我必须从 Inventor 端设置第二个 Web 组件以获取 csv 文件,见下文。
https://docs.google.com/spreadsheets/d/xxxxSpreadsheetIDxxxx/edit#gid=sheetID
解决方案
以下是如何在谷歌驱动器中创建所选工作表的 csv 文件:
function sheetToCsv()
{
var ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
var sheet_Name = "Sheet1"
var requestData = {"method": "GET", "headers":{"Authorization":"Bearer "+ScriptApp.getOAuthToken()}};
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheet_Name)
var sheetNameId = sheet.getSheetId().toString();
params= ssID+"/export?gid="+sheetNameId +"&format=csv"
var url = "https://docs.google.com/spreadsheets/d/"+ params
var result = UrlFetchApp.fetch(url, requestData);
var resource = {
title: sheet_Name+".csv",
mimeType: "application/vnd.csv"
}
var fileJson = Drive.Files.insert(resource,result)
}
该代码创建一个包含Sheet1内容的 csv 文件。
为了运行上述功能,您需要激活Advanced Drive Service。
解释:
转到资源=>高级 Google 服务=>激活 Drive API
另一种选择是将 csv 文件创建到特定文件夹,然后您需要将代码的资源部分替换为:
var folder_id ='id';
var resource = {
title: sheet_Name+".csv",
mimeType: "application/vnd.csv",
parents: [{ id: folder_id }]
}
推荐阅读
- python - 打印字典时如何将“:”变为“=”?
- vba - 使用 vba 读取 ngx-datatable 表
- flutter - 如何在颤动的文本字段中拥有来自选定项目的文本
- ruby-on-rails - 过滤器链因 :validate_sign_up_params 渲染或重定向而停止
- sql-server - 为什么矩阵上 SSRS 中的备用背景颜色反映在超过 1 行上
- roblox - 机器人 | 帮助修复公告牌 GUI 中的截止 GUI
- python - 如何使用 aiohttp_jinja2 获取部分 url?
- php - 如何对foreach数据求和
- javascript - 拖动div时如何防止代码运行
- javascript - 通过 findIndex 按索引查找对象,如果没有找到则返回第一项