Google Apps 脚本如何将特定工作表导出为 csv 格式

Loo*_*ang 8 google-sheets google-apps-script

在 MIT Inventor II 中,我使用 Web 组件通过 google apps 脚本的 doGet() 获取 SpreadsheetID 和 SheetID。获得信息后,我使用另一个 Web 组件设置 url,如下所示,以从特定工作表获取 csv 格式的文件。我的问题是如何使 GAS 获取 SpreadsheetID 和 SheetID,然后一次性导出 csv 文件,这样我就不必在 Inventor 端使用 2 个 Web 组件?

GAS代码如下。这是为了“返回”spreadsheetID 和sheetID。

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]);
Run Code Online (Sandbox Code Playgroud)

获得 SpreadsheetID 和 SheetID 后,我必须从 Inventor 端设置第二个 Web 组件才能获取 csv 文件,请参见下文。

https://docs.google.com/spreadsheets/d/xxxxSpreadsheetIDxxxx/edit#gid=sheetID
Run Code Online (Sandbox Code Playgroud)

soM*_*rio 16

以下是如何在 Google 云端硬盘中创建所选工作表的 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)
  
} 
Run Code Online (Sandbox Code Playgroud)

该代码创建一个包含Sheet1内容的 csv 文件。

为了运行上述功能,您需要激活高级驱动服务

解释:

转到资源=>高级 Google 服务=>激活 Drive API

另一种选择是将 csv 文件创建到特定文件夹,然后您需要将代码的资源部分替换为:

var folder_id ='id';
       
   var resource = {
  title: sheet_Name+".csv",
  mimeType: "application/vnd.csv",
  parents: [{ id: folder_id }]
     }
Run Code Online (Sandbox Code Playgroud)

  • 如果我们使用 mimeType: MimeType.CSV 那么该文件也可以被 Google Drive 识别。 (3认同)