首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果csv文件存在,如何删除/trash/remove

如果csv文件存在,如何删除/trash/remove
EN

Stack Overflow用户
提问于 2019-08-10 01:38:23
回答 2查看 175关注 0票数 0

我正在尝试创建一个导出到csv应用程序的脚本,但它不会删除位于同一文件夹中的现有csv文件。我想要么丢弃它们,要么覆盖它们。

下面是我已经尝试过的代码

代码语言:javascript
运行
复制
function saveAsCSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  // create a folder from the name of the spreadsheet
  // var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_' + new Date().getTime());
  // var folder = DriveApp.createFolder(ss.getName().toLowerCase().replace(/ /g,'_') + '_csv_');
  for (var i = 0 ; i < sheets.length ; i++) {
    var sheet = sheets[i];
    // append ".csv" extension to the sheet name
    fileName = sheet.getName() + ".csv";
    // convert all available sheet data to csv format
    var csvFile = convertRangeToCsvFile_(fileName, sheet);

    var file = DriveApp.getFileById(ss.getId());
    var folder = file.getParents();
    folder = folder.next();

    // loop through files and delete ones with existing name
    var existingfiles  = folder.getFiles()
    for (var j = 0 ; j<existingfiles.length;j++){
      var existingfile = existingfiles[j].next()
      if (existingfile.getName()!=ss.getName()){
        //to delete
        //existingfile.setTrashed(true);
        folder.removeFile(existingfile);
      }
    }

    //create new file
    folder.createFile(fileName, csvFile);

  }      
}

我希望所有与该文件夹中的电子表格名称不同的文件都会被删除,然后为每个选项卡创建一个csv。相反,我会得到每个csv文件的副本。

EN

回答 2

Stack Overflow用户

发布于 2019-08-10 02:55:22

非常感谢你的帮助。while循环帮了很多忙。以下是最终对我起作用的方法。

代码语言:javascript
运行
复制
function saveAsCSV() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  var file = DriveApp.getFileById(ss.getId());
  var folder = file.getParents();
  folder = folder.next();

  // loop through files and delete ones with existing name
    var xfiles=folder.getFiles();
    while(xfiles.hasNext()) {
      var fi=xfiles.next();
      if(fi.getMimeType()!=MimeType.GOOGLE_SHEETS){fi.setTrashed(true);}
    }

  // create new csv files
  for (var i = 0 ; i < sheets.length ; i++) {
    var sheet = sheets[i];
    // append ".csv" extension to the sheet name
    fileName = sheet.getName() + ".csv";
    // convert all available sheet data to csv format
    var csvFile = convertRangeToCsvFile_(fileName, sheet);

   //create new file
    folder.createFile(fileName, csvFile);

  }      
};
票数 1
EN

Stack Overflow用户

发布于 2019-08-10 02:12:53

试试这个:

代码语言:javascript
运行
复制
function trashOthers() {
  var ss=SpreadsheetApp.getActive();
  var shts=ss.getSheets();
  var fldr=DriveApp.getFileById(ss.getId()).getParents();
  var n=0;
  while(fldr.hasNext()) {
     var folder=fldr.next();
     n++;
  }
  if(n>1){throw('More than one Folder');}
  for (var i=0;i<shts.length;i++) {
    var sh=shts[i];
    var fileName=sh.getName() + ".csv";
    var csvFile=convertRangeToCsvFile_(fileName, sh);
    var xfiles=folder.getFiles();
    while(xfiles.hasNext()) {
      xfiles.next().setTrashed(true);
    }
    folder.createFile(fileName, csvFile);
  }      
}

也许这样更好:

代码语言:javascript
运行
复制
function deleteOthers() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var shts=ss.getSheets();
  var fldr=DriveApp.getFileById(ss.getId()).getParents();
  var n=0;
  while(fldr.hasNext()) {
     var folder=fldr.next();
     n++;
  }
  if(n>1){throw('More than one Folder');}
  for (var i=0;i<shts.length;i++) {
    var sh=shts[i];
    var fileName=sh.getName() + ".csv";
    var csvFile=convertRangeToCsvFile_(fileName, sh);
    var xfiles=folder.getFiles();
    while(xfiles.hasNext()) {
      var fi=xfiles.next();
      if(fi.getMimeType()!=MimeType.GOOGLE_SHEETS){fi.setTrashed(true);}
    }
    folder.createFile(fileName, csvFile);
  }      
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57434860

复制
相关文章

相似问题

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