【问题标题】:How to delete/overwrite CSV file using google apps script?如何使用谷歌应用脚​​本删除/覆盖 CSV 文件?
【发布时间】:2013-02-19 19:08:30
【问题描述】:

我的 google 应用程序脚本将 csv 文件 [test.csv] 导入新选项卡,操作一些值,然后将操作的选项卡保存为 csv 文件 [test.csv]。当它保存新版本时,它只是制作另一个副本 [test(1).csv]。我希望覆盖以前的文件(或删除旧文件然后导出/写入新版本。)请帮忙?

我正在使用来自Interacting With Docs List Tutorial的参考代码

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我知道这是一个老问题,但从那时起,已接受答案中的大部分信息已被 Google 弃用。 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
    }
    

    【讨论】:

    • 感谢您,但我可以确认它不适用于 pdf 文件。我怀疑不支持替换这些文件的内容。我还没有检查它是否支持谷歌文档覆盖。
    【解决方案2】:

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


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


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 2022-01-14
      • 2015-01-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多