【问题标题】:Problem script for Export a spreadsheet in CSV以 CSV 格式导出电子表格的问题脚本
【发布时间】:2020-01-31 15:43:43
【问题描述】:

我遇到了将工作表导出为 CSV 的脚本问题:

我希望在 Google 驱动器上的表格的父文件夹中创建我的文件夹,而不是在我的 google 驱动器的根目录中。

我似乎也无法修改脚本以覆盖文件夹的旧版本而不是创建新版本。

你能帮帮我吗

最好的问候

function onOpen() { 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var csvMenuEntries = [{name: "export as csv files", functionName: "saveAsCSV"}]; 
ss.addMenu("csv", csvMenuEntries); 
}


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'); 
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 a file in the Docs List with the given name and the csv data 
folder.createFile(fileName, csvFile); 
} 
Browser.msgBox('Le fichier a été nommé ' + folder.getName()); 
} 


function convertRangeToCsvFile_(csvFileName, sheet) { 
 // get available data range in the spreadsheet 
var activeRange = sheet.getDataRange(); 
try { 
var data = activeRange.getValues(); 
var csvFile = undefined; 


// loop through the data in the range and build a string with the csv data 
if (data.length > 1) { 
var csv = ""; 
for (var row = 0; row < data.length; row++) { 
for (var col = 0; col < data[row].length; col++) { 
if (data[row][col].toString().indexOf(",") != -1) { 
data[row][col] = "\"" + data[row][col] + "\""; 
} 
} 


 // join each row's columns 
 // add a carriage return to end of each row, except for the last one 
      if (row < data.length-1) { 
           csv += data[row].join(",") + "\r\n"; 
        } 
        else { 
          csv += data[row]; 
        } 
      } 
       csvFile = csv; 
    } 
    return csvFile; 
  } 
  catch(err) { 
    Logger.log(err); 
    Browser.msgBox(err); 
  } 
};

【问题讨论】:

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


    【解决方案1】:

    非常感谢,原来如此!它完美无缺!谢谢。

    我要最后一次投诉 在我的数据导入脚本中,我希望将 CSV 文件导入“备​​份”工作表,但我希望保留“添加到活动工作表”类型的先前数据

    我的脚本

    function Backup() {
       var spreadsheet = SpreadsheetApp.getActive();
      spreadsheet.getRange('A4').activate();
      spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Backup'), true);
      var sheet = spreadsheet.getActiveSheet();
      sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns()).activate();
      spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
      spreadsheet.getRange('A1').activate();
      var file = DriveApp.getFilesByName("Report.csv").next();
      var csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), ",");
      var sheet = SpreadsheetApp.getActiveSheet();
      sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData);
    };
    

    【讨论】:

    • 我刚才注意到了你的回答。我可以理解我的回答对于解决您的问题是不完整的。我没有注意到您要备份源值。这是因为我的英语水平不好。我对此深表歉意。我不想混淆其他用户。所以我必须删除我的答案。我为我糟糕的技术深表歉意。我想学习更多。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多