• Как дописать цикл?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Вам нужно добавить данные о листе в цикл и из цикла вызывать генерацию файла

    function onOpen() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var csvMenuEntries = [{ name: 'export as csv files', functionName: 'userActionSaveAllSheetsAsCSV' }];
      ss.addMenu('csv', csvMenuEntries);
    }
    
    function userActionSaveAllSheetsAsCSV() {
      var ss = SpreadsheetApp.getActiveSpreadsheet();
      var sheets = ss.getSheets();
      var ssid = ss.getId();
    
      var fileInDrive = DriveApp.getFileById(ssid);
      var folderInDrive = fileInDrive.getParents().next().getId();
    
      const urls = sheets.map((sheet) => {
        const filename = `${sheet.getParent().getName()} ${sheet.getName()}.csv`;
        const array = sheet.getDataRange().getValues();
        const url = saveArrayToCSV_(array, filename, folderInDrive);
        return { url, filename, folderInDrive };
      });
    
      console.log(JSON.stringify(urls, null, '  '));
    }
    
    /**
     * @param {string[][]} array
     * @param {string} filename
     * @param {string} folderInDrive
     * @returns {string} The file url
     */
    function saveArrayToCSV_(array, filename, folderInDrive) {
      const data = array.map((row) => row.join(';')).join('\n');
      const url = DriveApp.getFolderById(folderInDrive)
        .createFile(filename, data, 'text/csv')
        .getDownloadUrl()
        .replace('?e=download&gd=true', '');
      return url;
    }


    Результатом работы программы являются файлы, а также можно получить лог с именами файлов, идентификатором папки и ссылками.

    620deb5b1701d349092522.png

    Ссылка на живой пример https://docs.google.com/spreadsheets/d/1A0ytCgO-v0...
    Ответ написан
    Комментировать