google app script print button

2019-01-15 15:42发布

问题:

I've been working on a survey for about a month now(this is my first google script project, also I should mention that it's a web based app), and I only have a few things left to do(Creating a print button is one of them). Before I go on, I will give you some info about the survey. There are 6 pages(Each page corresponds to a button-I'm using buttons instead of the menu because I found out about it recently...) and only 1 page can be viewed at a time.

The problem is that I need to create the print button...which will print all of the pages.

I've been looking for a google script example for about 3-4 days now and I can't find anything...If I didn't make it clear enough please let me know and I will try to give more details..

Dave

回答1:

I guess you know that Google Apps Script applications have no way to print anything from inside your application since it runs on Google servers and not on you computer. Spreadsheets and documents integrate a print utility in their own environment but webapps (and sites) you develop with GAS don't have this environment.

Your 'print button' could probably create a pdf document that you'll be able to print easily.



回答2:

    function printPdf() {
    SpreadsheetApp.flush();
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = ss.getActiveSheet();

    var gid = sheet.getSheetId();

    var pdfOpts = '&size=A4&fzr=false&portrait=false&fitw=true&gridlines=false&printtitle=false&shee        tnames=false&pagenum=UNDEFINED&attachment=false&gid='+gid;


    var row2 = 29;
    var printRange = '&c1=0' + '&r1=0' + '&c2=7' + '&r2='+row2; // B2:APn
    var url = ss.getUrl().replace(/edit$/, '') + 'export?format=pdf' + pdfOpts + printRange;

    var app = UiApp.createApplication().setWidth(200).setHeight(50);
    app.setTitle('Print this sheet');

    var link = app.createAnchor('Download PDF', url).setTarget('_new');

    app.add(link);

    ss.show(app);
     }

This is a code that worked for me. It's modified from another thread.