首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不使用Google + Google SpreadSheet从Google删除文件

不使用Google + Google SpreadSheet从Google删除文件
EN

Stack Overflow用户
提问于 2019-10-26 02:36:02
回答 1查看 339关注 0票数 1

我在我的Google SpreadSheet中有一个脚本,它将我的Google表保存为XLSX格式的每次编辑。它工作正常,但它正在创建一个同名的新文件(许多文件同名,而不是覆盖在同一个文件夹中)。

我想删除旧文件并保存新版本,或者只是覆盖使用相同名称的文件。

我的代码是:

代码语言:javascript
复制
function getGoogleSpreadsheetAsExcel(){

  try {

    var ss = SpreadsheetApp.getActive();
    var url = "https://docs.google.com/feeds/download/spreadsheets/Export?key=" + ss.getId() + "&exportFormat=xlsx";
    var params = {
      method      : "get",
      headers     : {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
      muteHttpExceptions: true
    };

    var blob = UrlFetchApp.fetch(url, params).getBlob();
    blob.setName(ss.getName() + ".xlsx");

    // set the folder where I am working using the id
    var folder = DriveApp.getFolderById(“FOLDER_ID");

    var xname = “blablabla.xlsx"; //set the file name
    var existing = folder.getFilesByName(xname);
    if (existing.hasNext()) {
      Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);

    // 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE      


      Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
      var arquivo = folder.createFile(blob); //save the new version
      Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
    }

    else {
      Browser.msgBox(‘file does not exists, saving.', Browser.Buttons.OK);
      var arquivo = folder.createFile(blob); //save the file
      Browser.msgBox(‘file saved.', Browser.Buttons.OK); //file saved
    }


  } catch (f) {
    Logger.log(f.toString());
  }
}

帮助我从Google删除或改写旧版本

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-26 06:05:24

  • blablabla.xlsx的文件存在于FOLDER_ID的特定文件夹中时,您希望覆盖blablabla.xlsx的文件。
  • 或者,当blablabla.xlsx的文件存在于FOLDER_ID的特定文件夹中时,您希望删除现有文件并将其创建为新文件。

如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个。

在使用此修改后的脚本之前, 请在高级谷歌服务中启用驱动器API。

模式1:

在这种模式中,现有文件被blob覆盖。

修改脚本:

当您的脚本被修改,请修改如下。

发自:

代码语言:javascript
复制
if (existing.hasNext()) {
  Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);

// 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE      


  Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
  var arquivo = folder.createFile(blob); //save the new version
  Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
}

至:

代码语言:javascript
复制
var arquivo; // Added
if (existing.hasNext()) {
  Browser.msgBox('file exists, delete to save the new version after.', Browser.Buttons.OK);
  Browser.msgBox('file deleted.', Browser.Buttons.OK);
  var id = Drive.Files.update({}, existing.next().getId(), blob).id; // Modified
  arquivo = DriveApp.getFileById(id); // Modified
  Browser.msgBox('new version was saved.', Browser.Buttons.OK);
}

模式2:

在此模式中,删除现有文件,并将blob创建为新文件。

修改脚本:

当您的脚本被修改,请修改如下。

发自:

代码语言:javascript
复制
if (existing.hasNext()) {
  Browser.msgBox(‘file exists, delete to save the new version after.', Browser.Buttons.OK);

// 'DELETE THE OLD FILE FROM GOOGLE DRIVE' CODE GOES HERE      


  Browser.msgBox(‘file deleted.', Browser.Buttons.OK);
  var arquivo = folder.createFile(blob); //save the new version
  Browser.msgBox(‘new version was saved.', Browser.Buttons.OK);
}

至:

代码语言:javascript
复制
var arquivo; // Added
if (existing.hasNext()) {
  Browser.msgBox('file exists, delete to save the new version after.', Browser.Buttons.OK);
  Browser.msgBox('file deleted.', Browser.Buttons.OK);
  Drive.Files.remove(existing.next().getId()); // Modified
  arquivo = folder.createFile(blob); // Modified
  Browser.msgBox('new version was saved.', Browser.Buttons.OK);
}

注意:

  • 在上面修改的脚本中,当脚本运行时,现有文件将被blob覆盖和/或删除。所以请小心点。
  • 在您的脚本中,用作单引号。在这种情况下,会发生错误。请修改为'。请小心这个。

参考文献:

如果我误解了你的问题,而这不是你想要的方向,我道歉。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58567608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档