Créer un fichier png à partir d'un dessin Google en utilisant App Script

Aug 19 2020

J'ai un dossier rempli de dessins Google. J'ai les noms de fichiers des dessins Google dans une feuille de calcul Google. Je peux extraire les noms de fichiers de la feuille de calcul Google, parcourir les noms de fichiers, trouver tous les dessins Google et ... c'est là que je suis bloqué. Je voudrais convertir les dessins en fichiers PNG et stocker les fichiers PNG dans un dossier de lecteur séparé.

C'est le script que j'ai jusqu'à présent ...

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());
    }
  }
}

Lorsque je l'exécute, tous les dessins Google sont convertis en fichiers PDF et stockés dans mon dossier de lecteur.

Réponses

1 ziganotschka Aug 19 2020 at 15:02

Vous devez spécifier vers quel mimeType vous souhaitez convertir le dessin

Cependant, la conversion de drawingsvers pngn'est pas possible directement, vous devez effectuer les étapes suivantes:

  • Créez un lien d'exportation pour exporter le fichier sous image/png
  • Récupérez ce lien avec UrlFetchApp
  • Créer un fichier à partir du blob du résultat

Échantillon

  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);