如何将特定列导出到 Google 表格中的文本文件

How to export specific columns to text files in Google Sheets

我想知道如何将特定列中的文本从 Google 表格导出到 Google Drive .txt 文件。我正在尝试从所有列中导出所有文本,因此 google 驱动器上的每一列都会有一个不同的 .txt 文件。还想跳过前两行。 我发现了这个:

function saveToTextfile() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange(1, 1, sheet.getLastRow(), sheet.getLastColumn());
  var rows = range.getValues();
  var folder = DriveApp.getFoldersByName("folderName").next();
  var files = folder.getFiles();
  while(files.hasNext()) files.next().setTrashed(true);
  rows.forEach(function(row, index) {
    folder.createFile("row" + index + ".txt", row.join(", "));
  });
}

此函数正在为所有行而不是列创建一个文本文件,并且还在生成的 txt 文件中添加了很多“,”。我不知道如何改变它会做列,基本上我想要为列创建一个 txt 文件的函数(例如:D3 到 D100、E3 到 E100、F3 到 E100 等等)。 还希望在对 sheet.

进行任何更改时更新文本文件

谢谢:)

转置数组:

getValues() returns 一个二维数组,其中外部数组中的每个元素对应一行。您想要一个二维数组,其中外部数组元素对应于列。即需要对二维数组进行转置

可以在 this answer:

中找到一个简单的方法
array[0].map((_, colIndex) => array.map(row => row[colIndex]));

其他问题:

  • 如果您想跳过前两行,您范围内的起始行(在 getRange 中定义)应该是 3 而不是 1,并更正行数相应的行(检查下面的代码示例)。
  • 它增加了很多 , 因为你是这样写的(见 row.join(", "))。相反,如果您希望每个值占据一个新行,请改用 \n(检查下面的代码示例)。
  • 更新文本文件需要安装 onEdit trigger which would fire the function saveToTextfile every time the spreadsheet is edited. Since this function requires authorization, it cannot be a simple trigger, but an installable one。如果您在安装时遇到问题,请 post 提出一个新问题(每个问题应该针对一个特定问题,而不是多个问题)。

代码示例:

function saveToTextfile() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var firstRow = 3; // Skip first two rows => start at 3rd
  var range = sheet.getRange(firstRow, 1, sheet.getLastRow() - firstRow + 1, sheet.getLastColumn());
  var rows = range.getValues();
  var columns = rows[0].map((_, colIndex) => rows.map(row => row[colIndex]));
  var folder = DriveApp.getFoldersByName("folderName").next();
  var files = folder.getFiles();
  while(files.hasNext()) files.next().setTrashed(true);
  columns.forEach(function(column, index) {
    folder.createFile("column" + index + ".txt", column.join("\n")); // New line
  });
}

参考:

  • Transposing a 2D-array in JavaScript