有没有办法用谷歌应用程序脚本创建一个仅包含特定电子表格的PDF脚本?

时间:2012-09-16 22:44:29

标签: google-apps-script

在电子表格应用程序本身中,您可以选择仅打印特定工作表。您还可以在应用程序中创建pdf时关闭网格线。有没有办法在创建pdf时通过脚本执行此操作?

7 个答案:

答案 0 :(得分:4)

请看一下这段代码:https://gist.github.com/4169590

它的功能是使用Google Spreadsheet内置下载作为PDF功能,因此可以进行相同类型的自定义,包括隐藏网格线和指定工作表。使用GET参数进行播放以获得理想的输出。最后,脚本将PDF文件转换为blob,您可以在自己的脚本中进一步操作。为了实现这一目标,您需要对电子表格订阅源范围进行额外授权。

希望它有所帮助。

答案 1 :(得分:3)

@rcknr,为我工作,下面有更多选择。 (来自:http://productforums.google.com/forum/#!msg/apps-script/wQvCF6yY1Qk/R0uyVmf-Xx0J

这样的网址:  https://spreadsheets.google.com/feeds/download/spreadsheets/Export?key=tOHm3f8tdIxf7tSZzWvBGiA&gid=0&size=legal&fitw=true&gridlines=false&portrait=false&exportFormat=pdf

其他设置

fmcmd=12
size=legal/A4
fzr=true/false
portrait=false/true
fitw=true/false
gid=0/1/2  
gridlines=false/true
printtitle=false/true
sheetnames=false/true
pagenum=UNDEFINED
attachment=false/true  

有时需要的是真/假,我不能使用0/1。

答案 2 :(得分:2)

Google apps脚本,用于创建电子表格特定表格的pdf。

function generatePdf() {
    var originalSpreadsheet = SpreadsheetApp.getActive();

    var sourcesheet = originalSpreadsheet.getSheetByName("Sheet - Name");
    var sourcerange = sourcesheet.getRange('A1:G7');  // range to get - here I get all of columns which i want
    var sourcevalues = sourcerange.getValues();
    var data = sourcesheet.getDataRange().getValues();

    var newSpreadsheet = SpreadsheetApp.create("Spreadsheet to export"); // can give any name.
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var projectname = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = sourcesheet.copyTo(newSpreadsheet);
    var destrange = sheet.getRange('A1:G7');
    destrange.setValues(sourcevalues);
    newSpreadsheet.getSheetByName('Sheet1').activate();
    newSpreadsheet.deleteActiveSheet();

    var pdf = DriveApp.getFileById(newSpreadsheet.getId());
    var theBlob = pdf.getBlob().getAs('application/pdf').setName("name");

    var folderID = "Folder Id"; // Folder id to save in a folder.
    var folder = DriveApp.getFolderById(folderID);
    var newFile = folder.createFile(theBlob);

    DriveApp.getFileById(newSpreadsheet.getId()).setTrashed(true); 
}

答案 3 :(得分:0)

不幸的是,目前无法使用Apps脚本,但您可以在issue tracker上提交功能请求。

答案 4 :(得分:0)

当您选择导出为pdf时,您会看到一个带有选项的消息框。在此消息框的右侧有五个复选框。检查第二个,然后您将隐藏导出中的网格线。我不知道这个复选框的标签,因为我使用的是另一种语言而不是英文。

祝你好运!

- 罗伯特

答案 5 :(得分:0)

这是一个解决方案

var blob = DriveApp.getFileById(idsheet).getAs("application/pdf");
blob.setName("name".pdf");
var dossier = DriveApp.getFolderById("0Bx71KaTqXxQPQUYyVEVyYkJ0bEU");
dossier.createFile(blob);

答案 6 :(得分:0)

我只是隐藏了不想放入pdf的表格