2017-05-05 114 views
1

我需要var file = dir.createFile(blob).setContent('Stores_Month.pdf');来覆盖现有的Stores_Month.pdf文件。覆盖特定Google云端硬盘文件夹中的现有文件

function runCBUEBUquarterly() { 

    var file = DriveApp.getFilesByName("Data_Stores_Quarter.csv").next(); 
    var csvData = Utilities.parseCsv(file.getBlob().getDataAsString()); 
    var sheet = SpreadsheetApp.getActive().getSheetByName('Data_Month'); 
    sheet.getRange(1, 1, csvData.length, csvData[0].length).setValues(csvData); 


/* Highlight all sort range and sort by AS - Okanagan */ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActive().getSheetByName('Stores_Month'); 
    var range = sheet.getRange("A5:AS10"); 

// Sorts by the values in column (AS) 
    range.sort({column: 45, ascending: false}); 


    /* Highlight all sort range and sort by AS - LM & Whistler */ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActive().getSheetByName('Stores_Month'); 
    var range = sheet.getRange("A13:AS24"); 

// Sorts by the values in column (AS) 
    range.sort({column: 45, ascending: false}); 


/* Save as PDF to Google Drive */ 
    SpreadsheetApp.flush(); 

    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActive().getSheetByName('Stores_Month'); 

    var url = ss.getUrl(); 

    //remove the trailing 'edit' from the url 
    url = url.replace(/edit$/,''); 

    //additional parameters for exporting the sheet as a pdf 
    var url_ext = 'export?exportFormat=pdf&format=pdf' + //export as pdf 
    //below parameters are optional... 
    '&size=letter' + //paper size 
    '&portrait=false' + //orientation, false for landscape 
    '&fitw=false' + //fit to width, false for actual size 
    '&pagenumbers=true' + //fit to width, false for actual size  
    '&sheetnames=false&printtitle=false' + //hide optional headers and footers 
    '&gridlines=false' + //hide gridlines 
    '&fzr=true' + //do not repeat row headers (frozen rows) on each page 
    '&gid=' + sheet.getSheetId(); //the sheet's Id 

    var token = ScriptApp.getOAuthToken(); 

    var response = UrlFetchApp.fetch(url + url_ext, { 
     headers: { 
     'Authorization': 'Bearer ' + token 
     } 
    }); 

    var blob = response.getBlob().setName(sheet.getName() + '.pdf'); 

    //from here you should be able to use and manipulate the blob to send and email or create a file per usual. 
    //In this example, I save the pdf to drive 



    var dir = DriveApp.getFoldersByName('CBU & EBU - Quarterly Tracker').next(); 
    var file = dir.createFile(blob).setContent('Stores_Month.pdf'); 

} 
+0

如果有帮助,这里有一篇关于此的博客文章,但我似乎无法使其工作。 https://ctrlq.org/docs/20472-overwrite-existing-files-in-google-drive as'Drive.Files.update({'似乎是折旧或导致问题的那个 –

回答

1

您可能需要使用类似下面的代码。我没有测试过,但试试看,看看会发生什么:

var dir, file, newContent; 

//dir = DriveApp.getFoldersByName('CBU & EBU - Quarterly Tracker').next(); 
dir = DriveApp.getFolderById('put the folder ID here');//Get folder by ID 

file = dir.getFilesByName('Stores_Month.pdf').next(); 

if (file) {//There is an existing file by that name 
    newContent = blob.getDataAsString(); 
    Logger.log('blob: ' + blob); 
    Logger.log('blob.getDataAsString(): ' + blob.getDataAsString()); 

    file.setContent(newContent);//The new content must be a string 
} else {//no file by that name was found 
    file = dir.createFile(blob).setName('Stores_Month.pdf'); 
} 
+0

看起来PDF文件现在正在输出空白的2页任何建议? –

+0

我在想'blob'中是否有任何内容我在代码中加入了一些'Logger.log()'行来检查blob。查看日志,查看日志中打印的内容是什么 –

+0

日志中有一堆含有问号符号的乱码,太大而无法粘贴到此处https://pastebin.com/ndS5PgNZ –

相关问题