Cree un archivo png desde un dibujo de Google usando App Script

Aug 19 2020

Tengo una carpeta llena de Dibujos de Google. Tengo los nombres de archivo de los dibujos de Google en una hoja de cálculo de Google. Puedo extraer los nombres de archivo de la hoja de cálculo de Google, iterar a través de los nombres de archivo, encontrar todos los dibujos de Google y ... aquí es donde me quedo atascado. Me gustaría convertir los dibujos en archivos PNG y almacenar los archivos PNG en una carpeta de unidad separada.

Este es el guión que tengo hasta ahora ...

function load_list_of_images() {
  var course_workbook_name = "SPREADSHEET"; // Title of spreadsheet to download files
  var course_workbooks = DriveApp.getFilesByName(course_workbook_name); // There may be more than one!
  try{
    var course_workbook_id = course_workbooks.next();
    Logger.log("Spreadsheet ID : " + course_workbook_id);    
  } catch(error) {
    Logger.log("Spreadsheet doesn't exist");
    return(null);
  }
  var course_workbook = SpreadsheetApp.open(course_workbook_id);
  var image_list_sheet = course_workbook.getSheetByName("image_list");
  // Get list of image names (without extensions)
  var list_of_images = [];
  var images = image_list_sheet.getRange(1,1,1000).getValues();
  for (var row in images) {
    for (var col in images[row]) {
      if (images[row][col] == "") {
        return(list_of_images);
      }
      list_of_images.push(images[row][col]);
    }
  }
}

function download_images() {
  var list = load_list_of_images();
  if (list == null){
    return(null);
  }
  for (var row in list){
    var image_name = list[row];
    var image_exists = DriveApp.getFilesByName(image_name);
    // There may be more than one
    if (image_exists.hasNext()) {
      var image = image_exists.next()
      var gDraw_file = DriveApp.getFileById(image.getId());
      DriveApp.createFile(gDraw_file.getBlob());
    }
  }
}

Cuando ejecuto esto, todos los dibujos de Google se convierten a archivos PDF y se almacenan en la carpeta de mi unidad.

Respuestas

1 ziganotschka Aug 19 2020 at 15:02

Debe especificar a qué tipo de mime desea convertir el dibujo

Sin embargo, la conversión de drawingsa pngno es posible directamente, debe realizar los siguientes pasos:

  • Cree un enlace de exportación para exportar el archivo como image/png
  • Obtenga este enlace con UrlFetchApp
  • Crea un archivo a partir del blob del resultado

Muestra

  var id = image.getId(); 
  var exportUrl = "https://www.googleapis.com/drive/v3/files/" + id + "/export?mimeType=image/png";
  var urlFetchOptions = {
    headers: {Authorization : "Bearer " + ScriptApp.getOAuthToken()}
  };
  var blob= UrlFetchApp.fetch(exportUrl, urlFetchOptions).getBlob();
  DriveApp.createFile(blob);