Poner imágenes y tablas en cabecera de docs con Google Apps Script


Nuestro compañero Ferran nos pidió en base al último post sobre cabeceras que hiciéramos una mejora en la que también pudiéramos poner imágenes y tablas...

Espero que este código cumpla con lo pedido:

function CreateDocExtended()
{
  var doc = DocumentApp.create("Test");
  var header = doc.addHeader();

  var resp = UrlFetchApp.fetch("https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi0HjAIlejgzaRwSlk0RF92GhvpSE5nx9eVKUy2fqk-8rQwlQXCJ_R2Va6owmMF_RAKS7EMkJhTC50IXHE7cbfE9Cgn0cqHlsiE9MO-5Cq8BV6mMOPsDkgM9GK2uaJR9Gg4eoKt1cfOdZTV/s1600/BannerLordPakus.jpg");
  header.appendImage(resp.getBlob());

  var table = header.appendTable();
  table.appendTableRow().appendTableCell("Cabecera automática");

}

Y este es el resultado



Espero que os sirva

18 comentarios:

  1. si es una imagen de Drive como se haria?

    ResponderEliminar
    Respuestas
    1. si, buena pregunta, cuando la imagen esta en drive como seria, sobre todo si tienes varias imagenes.

      Eliminar
  2. Prueba con compartir la imagen para todo aquel q tenga el link y usa el link de comparticion como ruta de la imagen. Pruebalo con diferentes usuarios q se vea bien.ya contaras como te ha ido. Nos vemos

    ResponderEliminar
  3. Si está en Drive he conseguido hacerlo así.

    var header = doc.addHeader();
    var imgn = DriveApp.getFileById('identificador de la imagen').getBlob();
    header.appendImage(imgn);

    ResponderEliminar
  4. Y en el caso de subir una imagen de mi equipo local como quedaría el código.

    ResponderEliminar
  5. Buenas, Si quisiera subir la imagen a partir del mismo GAS. por ejemplo como un ui... que salga una ventana emergente donde me deje buscar la imagen y elegirla
    o Si ahora que lo pienso podria usar la ui y directamente pegar el URL de las que quiera subir.

    ResponderEliminar
    Respuestas
    1. Buenas..

      Dos caminos:

      - Ponerle el link como bien has dicho y trabajar directamente con ello.
      - Hacer un popup que tenga un FileSelector de html y obtener el blob del fichero. Lo he hecho alguna vez pero es demasiado grande para ponerlo por aqui.

      Voy bastante liado ultimamente, puedo intentar crear una nueva entrada en el blog (no se decirte cuando) explicando todo el proceso.

      Nos vemos

      Eliminar
  6. Buenas, una consulta, tengo estos datos:
    TIPO DE OBSERVACIÓN:... CONDICIÓN SUB-ESTANDAR
    ÁREA REPORTADA:........... Producción
    UBICACIÓN:...................... CHATA

    Pero no me aparecen las líneas de los cuadros en mi correo. qué me falta, por favor su apoyo.

    ResponderEliminar
    Respuestas
    1. Q raro , enseñame el codigo que has usado y te digo donde tienes el fallo

      Nos vemos

      Eliminar
  7. en que lado se coloca en el lado del html o el codigo

    ResponderEliminar
    Respuestas
    1. No acabo de entenderte... el código lo has de poner en la sección de código. No se si es eso lo que estas preguntando :)

      Nos vemos!

      Eliminar
  8. Hola gracias por tus tutoriales me han servido bastante, tengo un ejercicio para generar un documento que lleva el siguiente proceso: Usuario contesta un formulario, se genera un documento con sus respuestas y se le manda por correo desde una llamada a la acción cuando presiona el botón de "enviar" y todo bien hasta el momento. Mi problema es que en el formulario incluyo apartados para subir imágenes y quiero insertarlas en el documento, como el formulario las colecta en una carpeta y en la spreadsheet me deja solamente un URL en la columna correspondiente a esa pregunta del formulario no he encontrado la forma de insertar la imagen a partir de esa URL proporcionada por el formulario. ¿Será que puedes ayudarme? Gracias de antemano, saludos.

    ResponderEliminar
    Respuestas
    1. A través de la url puedes obtener el id de la imagen que se ha subido y con ese id en principio deberias poder ponerla en el documento. Comentame como te ha ido

      Eliminar
    2. Efectivamente, realizando este paso (var id = link.split('id=')[1];) obtuve el id y logré insertarla y con unos pasos más de búsqueda de texto logre que se vaya a la sección deseada, ahora solo quiero darle formato a la imagen. ¿Tienes idea de como reemplazar una imagen con otra y que tome sus propiedades de formato? Al menos desde docs de google se puede reemplazar la imagen con clic derecho, pero desde apps script no se me ocurre como lograrlo. Ejemplo, para el texto con un "body.replaceText()" lo logro, pero no hay una función "replaceImage()".

      Eliminar
  9. Hola consulta como pondría color a la tabla? Por lo que veo se usa con setBorderColor() pero no se si hay que poner algo mas

    ResponderEliminar

Tal vez te interese