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

    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...
    Ответ написан
    Комментировать
  • Как сделать нумерацию ответов в google form?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Самое простое, что вы можете сделать - это добавить формулу в первую строку в соседнюю колонку, куда Форма сохраняет ответы.

    Например,

    =ARRAYFORMULA(ROW(A:A) - 1)

    Чуть сложнее

    ={"Номер ответа";ARRAYFORMULA(ROW(A2:A) - 1)}

    Другие способы потребуют скриптов. Если ваши респонденты не будут менять ответы, то актуальным номером является порядковый номер записи в Таблицу

    ={"Номер ответа";ARRAYFORMULA(MATCH(A2:A;SORT(A2:A;1;1);0))}


    5ed603af049ba412426285.png
    Ответ написан
    3 комментария
  • Форма для отправки в google таблицы?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Существует масса способов отправки данных в Таблицу. Один из них - опубликованное веб-приложение на Google Apps Script.

    В данном примере https://gdriveru.blogspot.com/2015/02/FILEUPLOAD.html рассматривается вариант отправки файла и остальных данных формы с с охранением результата в Гугл Таблицу.

    Сама форма настраивается и может быть встроена как ресурс iframe.
    Ответ написан
    Комментировать