Export to pdf

Here are the very basics, there are other ways:

var ss = SpreadsheetApp.getActive();

function hideSheets() {
  var sheets = ss.getSheets();
  for (var i=0;i<sheets.length;i++) {
    if (sheets[i].getName() != "Sheet1") {
        sheets[i].hideSheet();
    }
  }
}

function showSheets() {
  var sheets = ss.getSheets();
  for (var i=0;i<sheets.length;i++) {
    if (sheets[i].getName() != "Sheet1") {
        sheets[i].showSheet();
    }
  }
}

function createPDF() {
hideSheets();
var theBlob = ss.getBlob().getAs('application/pdf').setName("Sheet1.pdf");
var newFile = DriveApp.getRootFolder().createFile(theBlob);
showSheets();
}

The script first hides all the sheets except the one you want to export as a pdf. Then it generates the pdf of the sheet in the root folder of your google drive. Finally it unhides all the previously hidden sheets. You may lose some formatting, and you will need to give permissions to run the scripts. Please note that the sheet "Sheet1" is hard coded in the scripts.

Y cómo puedo definir la carpeta o folder en específico en donde quiero que se guarden los pdf??

Like so:

function createPDF() {
var folderId = 'YOUR FOLDER ID HERE';
hideSheets();
var theBlob = ss.getBlob().getAs('application/pdf').setName("Sheet1.pdf");
var newFile = DriveApp.getFolderById(folderId).createFile(theBlob);
showSheets();
}

Mira mi estimado @TIMAI2 tengo el siguiente código, quiero ver si me puedes apoyar en cómo armar mis bloques en MIT APP INVENTOR:

function createPDF(fileName, sheetUrl, type) {

var pdfUrl = sheetUrl + "export?format=" +type + "&size=0&fzr=true&portrait=false&gid=0";

var folder = DriveApp.getFolderById("1PudcZRa91ftWdVyNnh4i3NKhyRBlz9cK"); // Replace "YOUR_FOLDER_ID" with the actual folder ID

var blob = UrlFetchApp.fetch(pdfUrl).getBlob().setName(fileName +"."+ type);

var newFile = folder.createFile(blob);

}

@TIMAI2 Me podrás dar el soporte por favor

I provided you with a solution, why find a different solution? You should ask support from the person that provided that method.

En realidad me lo brindó chatgpt pero lo que buscaba era que pueda colocar como parámetro la hoja que deseaba y el formato de exportación (elegir opción de pdf o xlsx)

Probé tu método y funciona bien

Pero ahora quiero ver cómo lo adapto con los bloques de app inventor2

Por favor apóyame

This works for me:

function createPdfFromUrl(sheetURL, folderId) {
  var pdfUrl = SheetURL + "export?format=pdf&size=0&fzr=true&portrait=false&gid=0";
  var folder = DriveApp.getFolderById(folder Id);
  var blob = UrlFetchApp.fetch(pdfUrl).getBlob().setName("gsdl1.pdf");
  var newFile = folder.createFile(blob);
}

where sheetURL looks like this:

https://docs.google.com/spreadsheets/d/1t-mFNVhILoR7wGtpdogQ9YtPrd6sZWvTQ6pcj7FVa6Q/

and folderId looks like this:

0B5al230KXbSyTVJkxcdoZ2pOVWM

Genial y cómo lo adapto a los bloques.

Por favor apóyame es la última parte de mi proyecto y de ti he aprendido bastante. :slight_smile:

As I indicated earlier, you will need a google apps script web app if you want to call these functions from your app. Then the blocks are fairly straight forward.

Ya tengo publicado el script como aplicación web, ya tengo el enlace del script.

Ahora quiero ver cómo empiezo con los bloques

En los bloques estoy perdido:

Todo ese procedimiento de implementar el script ya lo tengo.

Me queda la duda de cómo empezar con los bloques :frowning:

Yes, and more besides :wink:

Me puedes apoyar con los bloques en base a ese script por favor?


Tengo mis bloques así, pero creo que no son los correctos

Show your web app script

https://script.google.com/macros/s/AKfycbz1mbrdMqVvj4XGm2QZ2G8DQw48budVqOS5ZWiFYhXQtW41-naHcLZFAaaGjWQ17ibcOQ/exec

Quedo atento mi estimado @TIMAI2
Estaré muy agradecido por tu apoyo.