Могу ли я создать файл из скрипта Google Sheets? - PullRequest
13 голосов
/ 22 августа 2011

Я использую Google Sheets для создания прототипа числовых данных для того, что я делаю.

Есть ли способ экспортировать подмножество в текстовый файл?

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

Так есть ли способ создать текстовый файл для скачивания?

Ответы [ 2 ]

11 голосов
/ 23 августа 2011

Если у вас есть учетная запись Google Apps, то вы можете использовать DocsList.createFile () , чтобы создать текстовый файл и сохранить его в списке документов.

Раздел 3 этого руководства показывает, как сохранить выбранный диапазон электронной таблицы в виде файла в списке документов в формате CSV. Его можно довольно легко изменить, чтобы сохранить в другом формате.

1 голос
/ 22 июля 2016

У меня есть тексты моего проекта в некоторых столбцах электронной таблицы Google. Я взял это руководство по скрипту из Google и изменил его, чтобы выбрать только определенный диапазон (в приведенном ниже примере это D4: D).

Создает файл CSV в корневой папке вашего диска. Он все еще не загружает файл - я сейчас над этим работаю.

Надеюсь, это поможет!

/ * Код ниже является модификацией этого урока: https://developers.google.com/apps-script/articles/docslist_tutorial#section3 * /

    /* The code below is a modification from this tutorial: https://developers.google.com/apps-script/articles/docslist_tutorial#section3 */

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var csvMenuEntries = [{name: "Save as CSV file", functionName: "saveAsCSV"}];
  ss.addMenu("CSV", csvMenuEntries);
}

function saveAsCSV() {
  
  // Name the file
  fileName = "quests.csv";
  // Convert the range data to CSV format
  var csvFile = convertRangeToCsvFile_(fileName);
  // Create a file in the root of my Drive with the given name and the CSV data
  DriveApp.createFile(fileName, csvFile);
}

function convertRangeToCsvFile_(csvFileName) {
  // Get from the spreadsheet the range to be exported 
  var rangeToExport = SpreadsheetApp.getActiveSpreadsheet().getRange("D4:D");
  
  try {
    var dataToExport = rangeToExport.getValues();
    var csvFile = undefined;

    // Loop through the data in the range and build a string with the CSV data
    if (dataToExport.length > 1) {
      var csv = "";
      for (var row = 0; row < dataToExport.length; row++) {
        for (var col = 0; col < dataToExport[row].length; col++) {
          if (dataToExport[row][col].toString().indexOf(",") != -1) {
            //dataToExport[row][col] = "\"" + dataToExport[row][col] + "\"";
            dataToExport[row][col] = dataToExport[row][col];
          }
        }

        // Join each row's columns
        // Add a carriage return to end of each row, except for the last one
        if (row < dataToExport.length-1) {
          csv += dataToExport[row].join(",") + "\r\n";
        }
        else {
          csv += dataToExport[row];
        }
      }
      csvFile = csv;
    }
    return csvFile;
  }
  catch(err) {
    Logger.log(err);
    Browser.msgBox(err);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...