首页 > 解决方案 > 谷歌表格导出为 txt

问题描述

您好,我制作了这个脚本来将列中的数据导出到我的谷歌驱动器上的 .txt

function createOrAppendFile() {
  var ss = SpreadsheetApp.getActive();
  var sheet = ss.getActiveSheet();
  var range = sheet.getRange('G3:G50');
  var rows = range.getValues();
  var fileName="test.txt";
  var folderName="Videos";
  var data = rows.splice(0);
  var str = data.map(function(e) {return e.join()}).join("\n");
 
  var content = str;

  // get list of folders with matching name
  var folderList = DriveApp.getFoldersByName(folderName);  
  if (folderList.hasNext()) {
    // found matching folder
    var folder = folderList.next();

    // search for files with matching name
    var fileList = folder.getFilesByName(fileName);

    if (fileList.hasNext()) {
      // found matching file - append text
      var file = fileList.next();
      var combinedContent = content;
      file.setContent(combinedContent);
    }
    else {
      // file not found - create new
      folder.createFile(fileName, content);
    }
  }
}

问题是,当我导出数据时,它用空行导出,并且在 .txt 上显示了我不想拥有的空行,我该怎么做?所以我只导出有内容的行。

这就是 .txt 的样子 https://i.stack.imgur.com/wplZL.png

标签: google-apps-scriptgoogle-sheets

解决方案


我认为您的问题的原因可能是由于sheet.getRange('G3:G50'). 在这种情况下,即使空行包含在 的范围内的数据范围之下,也会G3:G50检索range.getValues()的所有行G3:G50。如果要检索具有数据范围的值,那么下面的修改如何?

从:

var range = sheet.getRange('G3:G50');

到:

var range = sheet.getRange('G3:G' + sheet.getLastRow());

并且,当您要删除“G”列的所有空行时,您还可以使用以下修改。

从:

var range = sheet.getRange('G3:G50');
var rows = range.getValues();

到:

var range = sheet.getRange('G3:G' + sheet.getLastRow());
var values = range.getValues().filter(([g]) => g.toString() != "");

参考:


推荐阅读