3

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

4

7 回答 7

4

看看这个代码片段:https ://gist.github.com/4169590

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

希望能帮助到你。

于 2012-11-29T15:05:30.857 回答
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 代替。

于 2013-02-17T23:33:59.653 回答
2

用于创建电子表格特定工作表的 pdf 的 Google 应用程序脚本。

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); 
}
于 2016-04-21T10:31:54.047 回答
0

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

祝你好运!

- 罗伯特

于 2012-09-30T16:32:59.397 回答
0

不幸的是,目前 Apps 脚本无法实现这一点,但您可以在我们的问题跟踪器上提交功能请求。

于 2012-09-26T23:15:25.493 回答
0

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

于 2020-08-20T17:35:05.470 回答
0

这是一个解决方案

var blob = DriveApp.getFileById(idsheet).getAs("application/pdf");
blob.setName("name".pdf");
var dossier = DriveApp.getFolderById("0Bx71KaTqXxQPQUYyVEVyYkJ0bEU");
dossier.createFile(blob);
于 2016-12-14T22:19:39.787 回答