Скрипт Google Apps как экспортировать лист спецификаций c в формате csv - PullRequest
0 голосов
/ 05 августа 2020

В MIT Inventor II я использую веб-компонент для получения SpreadsheetID и SheetID через doGet () скрипта приложений Google. После получения информации я использую другой веб-компонент, чтобы установить URL-адрес, как показано ниже, чтобы получить файл в формате csv из листа спецификаций c. Мой вопрос: как заставить GAS получать SpreadsheetID и SheetID, а затем экспортировать файл csv за один раз, чтобы мне не приходилось использовать 2 веб-компонента на стороне Inventor?

Коды 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]);

После того, как я получил SpreadsheetID и SheetID, мне нужно установить второй веб-компонент со стороны Inventor, чтобы получить файл csv, см. Ниже.

https://docs.google.com/spreadsheets/d/xxxxSpreadsheetIDxxxx/edit#gid=sheetID

1 Ответ

2 голосов
/ 05 августа 2020

Вот как вы можете создать CSV-файл выбранного листа на Google Диске:

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)
  
} 

Код создает CSV-файл с содержимым Sheet1 .

Для запуска вышеупомянутой функции вам необходимо активировать Advanced Drive Service .

Пояснение:

Go до Ресурсы => Расширенные службы Google => активировать Drive API

Другой вариант - создать файл csv в определенной папке , то ресурсную часть кода нужно заменить на такую:

var folder_id ='id';
       
   var resource = {
  title: sheet_Name+".csv",
  mimeType: "application/vnd.csv",
  parents: [{ id: folder_id }]
     }
...