如何使用谷歌应用程序脚本删除/覆盖CSV文件?

时间:2013-02-19 19:08:31

标签: google-apps-script

我的google apps脚本将csv文件[test.csv]导入新标签页,操作一些值,然后将操纵标签保存为csv文件[test.csv]。当它保存新版本时,它只是制作另一个副本[test(1).csv]。我希望改写以前的文件(或删除旧文件,然后导出/写入新版本。)请帮助吗?

我正在使用Interacting With Docs List Tutorial

中的参考代码

2 个答案:

答案 0 :(得分:5)

我知道这是一个老问题,但从那时起谷歌已经弃用了已接受答案中的大部分信息。 DocsList已经消失,文件对象上的clear()和append()方法也消失了。

我使用以下函数来创建或覆盖文件:

// Creates or replaces an existing file
function updateFile (folder, filename, data) {
  try {
    // filename is unique, so we can get first element of iterator
    var file = folder.getFilesByName(filename).next()
    file.setContent(data)
  } catch(e) {
    folder.createFile(filename, data)
  }
}

作为参考,这里有一些代码用于对文件夹执行相同操作。它假设我们在当前工作表的父文件夹中运行并想要一个文件夹 那里的新文件夹或现有文件夹的对象。

// Get folder under current folder. Create it if it does not exist
function getOrCreateFolder(csvFolderName) {
  var thisFileId = SpreadsheetApp.getActive().getId();
  var thisFile = DriveApp.getFileById(thisFileId);
  var parentFolder = thisFile.getParents().next();
  try {
    // csvFolderName is unique, so we can get first element of iterator
    var folder = parentFolder.getFoldersByName(csvFolderName).next();
    // asking for the folder's name ensures we get an error if the
    // folder doesn't exist. I've found I don't necessarily catch
    // an error from getFoldersByName if csvFolderName doesn't exist.
    fname = folder.getName()
  } catch(e) {
    var folder = parentFolder.createFolder(csvFolderName);
  }
  return folder
}

答案 1 :(得分:0)

您可以执行DocsList.find(fileName),它会为您提供具有该名称的文件列表。如果文件名是唯一的,那么您可以var file = DocsList.find(fileName)[0]


如果您是Google Apps用户,则可以使用file.clear()删除旧文件的所有内容,然后使用file.append()插入所有新内容


否则,您必须file.setTrashed(true)然后DocsList.createFile()才能制作新的。{/ p>