【问题标题】:Script to convert Google Sheet to Text Documents将 Google 表格转换为文本文档的脚本
【发布时间】:2018-03-06 22:28:09
【问题描述】:

我正在尝试在 Google 表格中创建一个自定义脚本,以在 Google 云端硬盘中创建文本文件。

工作表名称将是文件夹名称,A 列中的值将是文本文件名,B 列中的值将是插入到文本文件中的文本。

我已成功创建它,但在扩展它以为每一行创建一个新文件并执行多张工作表时遇到问题。

当我添加新工作表或新行时,如何调整代码以创建其他文件夹和文件?

这是我目前所拥有的:

function export() { 
  var sheet = SpreadsheetApp.getActiveSheet(); 
  var filename = sheet.getRange(1, 1).getValue();
  var foldername = sheet.getSheetName();
  Logger.log('Filename = ' + filename + '  Foldername = ' + foldername);
  var pFIT = DriveApp.getRootFolder().getFoldersByName(foldername);
  var parentFolder, File ;
  if (pFIT.hasNext())
    parentFolder= pFIT.next();

  if (parentFolder==null) {
    parentFolder = DriveApp.getRootFolder().createFolder(foldername);
  }

  var existing = parentFolder.getFilesByName(filename);
  if (existing.hasNext()) {
    var file = existing.next();
    if (file.getName() === filename) {
      file.setTrashed(true);
    }
  }
  var values = sheet.getRange(1, 2).getValues(); 
  var text = values.map(function (a) {return a.join('\t');}).join('\r\n');
  parentFolder.createFile(filename, text, MimeType.PLAIN_TEXT);
}

这是我在运行脚本时想要完成的任务:

截图 1

截图2

截图 3

【问题讨论】:

    标签: google-apps-script google-sheets google-drive-api


    【解决方案1】:

    这个修改怎么样?作为基本方向,我通过检查文件夹和文件的重复来修改你的脚本。

    修改点:

    • 检索工作表名称并检查文件夹的重复。
      • 找不到工作表名称的文件夹时,将文件夹创建为新文件夹。
    • 检索“A2:A”的文件名并检查文件的重复。
      • 找不到文件名的文件时,用B列的数据创建文件。

    修改后的脚本:

    function export() { 
      var ss = SpreadsheetApp.getActiveSpreadsheet(); 
      var sheets = ss.getSheets();
      for (var i in sheets) {
        var name = sheets[i].getSheetName();
        var fo = DriveApp.getFoldersByName(name);
        var folder = fo.hasNext() ? fo.next() : DriveApp.getRootFolder().createFolder(name);
        var values = sheets[i].getDataRange().getValues();
        values.shift();
        var filename, text;
        for (var j in values) {
          [filename, text] = values[j];
          folder.getFilesByName(filename).hasNext() || folder.createFile(filename, text, MimeType.PLAIN_TEXT);
        }
      }
    }
    

    注意:

    • 此脚本在将工作表添加到电子表格时创建文件夹。
    • 如果将值添加到 A 列,此脚本将创建文件。
      • 在这种情况下,当您更新 A 列的值时,将创建具有更新值的新文件。另一方面,现有文件将被忽略。

    如果这不是你想做的,请告诉我。我要修改。

    【讨论】:

    • 是否可以下载文件而不是在 googleDrive 中创建文件?
    • @saurabh 虽然我不确定我是否能正确理解您的问题,但这些线程对您的情况有用吗? stackoverflow.com/search?q=%5Bgoogle-apps-script%5D+download 如果这些对您的情况没有帮助,我深表歉意。
    猜你喜欢
    • 1970-01-01
    • 2021-09-18
    • 2016-01-06
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多