Сохраните файл Excel как Gsheet - PullRequest
0 голосов
/ 20 января 2020

Я хочу автоматизировать процесс, и у меня есть работа с python, селеном и VBA. Мой процесс начинается с загруженного файла с сервера SQL с python и селеном, позже с vba, я преобразовываю файл и применяю много формул. Когда я заканчиваю sh, я сохраняю файл в формате xlsx в папке на диске Google с помощью Google File Stream. Когда файл сохраняется в папке, с помощью скрипта Google я отправляю письмо с URL файла. Последняя цель всего этого заключается в том, что пользователи будут помещать наблюдения для de xlsx в папку на диске Google, но в этом формате у меня нет способа изменить файл на основе сотрудничества. Есть ли способ сохранить файл Excel в формате gsheet с помощью MS Excel или автоматизировать преобразование xlsx в gsheet, а затем отправить электронное письмо с URL-адресом нового файла? Привет!

Ответы [ 2 ]

1 голос
/ 20 января 2020

Вы можете автоматически преобразовать файл MS Excel в электронную таблицу Google с помощью Google Drive API

См. Пример в разделе Импорт в Google Документы типов .

Вы просто необходимо изменить mimeType с 'text/csv' на application/vnd.openxmlformats-officedocument.spreadsheetml.sheet или аналогичный, в зависимости от расширения вашего файла Excel.

PS: поскольку вы пометили свой вопрос с помощью google-apps-script: В Скрипт Google Apps вы можете сделать преобразование как здесь .

0 голосов
/ 14 февраля 2020

Вот код с решением:

function convertExceltoGoogleSpreadsheet() {


var folder = DriveApp.getFolderById('put the id's folder here')
var excelFile = folder.getFilesByType(MimeType.MICROSOFT_EXCEL).next();
var fileId = excelFile.getId();
var folderId = Drive.Files.get(fileId).parents[0].id;
var blob = excelFile.getBlob();
var resource = {
  title: excelFile.getName(),
  mimeType: MimeType.GOOGLE_SHEETS,
  parents: [{id: folderId}],
};

Drive.Files.insert(resource, blob);
}

Позже вам нужно удалить файлы Excel с помощью этого скрипта:

   function remove(){
   var folder = DriveApp.getFolderById('put you folder's id here');
   var files = folder.getFilesByType(MimeType.MICROSOFT_EXCEL);;
   while (files.hasNext()){
   var file = files.next();
   folder.removeFile(file);
   }

Третий шаг - поставить уведомление:

     function checkForChangedFiles() {

     // folder
     var folderID = '"' + "folder's id" + '"';

     // email configuration
     var emailFromName ="emailname";
     var emailSubject = "emailsubject";
     var emailBody = "<b><br>bodyemail:<br></b>" +
     "line1<br>" +
     "line2<br>"+
     "line3<br>"+
     "line4<br>";
      var emailFooter = "footer";

      var folderSearch = folderID + " " + "in parents";
      var ss = SpreadsheetApp.getActiveSpreadsheet(); 
      var sheet = ss.getActiveSheet();
      var email = sheet.getRange("put the cell with the email's values").getValue();
      var timezone = ss.getSpreadsheetTimeZone();
      var today     = new Date();
      var time = new Date(today.getTime() - 1 * 30 * 1000);  // 30 seconds
      var startTime = time.toISOString();
      var search = '(trashed = true or trashed = false) and '+ folderSearch +' and (modifiedDate > "' + startTime + '")';   

      var files  = DriveApp.searchFiles(search);
      var row = "", count=0;

      while( files.hasNext() ) {

      var file = files.next();
      var fileName = file.getName();
      var fileURL  = file.getUrl();
      var lastUpdated =  Utilities.formatDate(file.getLastUpdated(), timezone, "dd-MM-yyyy HH:mm");
      var dateCreated =  Utilities.formatDate(file.getDateCreated(), timezone, "dd-MM-yyyy HH:mm")

      row += "<li>" + lastUpdated + " <a href='" + fileURL + "'>" + fileName + "</a></li>";

      sheet.appendRow([dateCreated, lastUpdated, fileName, fileURL]);

      count++;
      }


      if (row !== "") {

      row = "<p>" + count + "  New File:</p><ol>" + row + "</ol>";
      row +=  emailBody+"<br>" + "<br><small> "+emailFooter+" </a>.</small>";     
      MailApp.sendEmail(email, emailSubject, "", {name: emailFromName, htmlBody: row});
      } 

И наконец мы собрали все вместе:

      function doall(){
      convertExceltoGoogleSpreadsheet();
      Utilities.sleep(10000);
      remove();
      Utilities.sleep(10000);
      checkForChangedFiles();

      }
...