如何将单个单元格从Google表格导出到文本文件

时间:2019-02-16 07:29:46

标签: text google-apps-script google-sheets export cell

我有一个带有大量数字的Google表格,这些数字可以通过SUM功能相加并求和。

总数位于D2和E2单元格中

我需要一个Google Apps脚本,该脚本可将每个单元格分别导出到我的Google云端硬盘中各自的.txt文件(标记为D2Total.txt和E2Total.txt)中。

每次运行脚本时,我都需要它们覆盖自己,因为我将使用G Suite中的触发器不断(每隔几分钟)更新它们。

这可能很简单,但是在编码方面我很me脚。

我在互联网上尝试了一些很接近的随机代码,但只会导出整个电子表格。

1 个答案:

答案 0 :(得分:0)

将电子表格中的数据表追加到Google Doc或Ascii文本文件

假设您在“ A2”中包含CSV数据,例如“ 1,2,3,4,5,6,7,8,9,10,11,12” 13,14,14,16,17,18,19,20,21,22,23,24带有行定界符'\ n',您可以使用此代码创建Google文档并将其附加为表格或直接导出将其保存为ascii文本文件。

导出到Google文档:

function exportToGDoc() {
  var fn=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yy:HH:mm") + '_Report';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet62');//Need Sheet Name
  var rg=sh.getRange(1,1);
  var csv=rg.getValue();
  var vA=Utilities.parseCsv(csv);
  var fldr=DriveApp.getFolderById('Your Folder Id');//Need Folder Id
  var dk=DocumentApp.create(fn);
  var bd=dk.getBody();
  bd.appendTable(vA)
  dk.saveAndClose();
  var fileId=dk.getId();
  Drive.Files.update({"parents": [{"id": fldr.getId()}]}, dk.getId());//Need to install Drive API
}

导出到Ascii文本文件:

function exportToAsciiText() {
  var fn=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "MM/dd/yy:HH:mm") + '_Report.csv';
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet62');//Need Sheet Name
  var rg=sh.getRange(1,1);//A1
  var csv=rg.getValue();
  var fldr=DriveApp.getFolderById('Your Folder Id');//Need Folder Id
  var file=fldr.createFile(fn, csv, MimeType.PLAIN_TEXT);
}

重新加载相同的ascii文本文件

function exportToAsciiText() {
  var fn='MyReport.csv';//Your report name
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('Sheet62');//Need Sheet Name
  var rg=sh.getRange(1,1);//A1
  var csv=rg.getValue();
  var fldr=DriveApp.getFolderById('Your Folder Id');//Need Folder Id
  var files=fldr.getFilesByName(fn);
  var n=0;
  while(files.hasNext()) {
    var file=files.next();
    n++;
  }
  switch (n) {
    case 0:
      var file=fldr.createFile(fn, csv, MimeType.PLAIN_TEXT);
      break;
    case 1:
      file.setContent(csv);
      break;
    default:
      SpreadsheetApp.getUi().showModalDialog(HtmlService.createHtmlOutput(Utilities.formatString('You have more than one file named %s in folder named %s.',fn,fldr.getName())), 'Error: To many files with that name.');
      break;                                       
  }
}