App Script kullanarak bir Google Çiziminden bir png dosyası oluşturun

Aug 19 2020

Google Çizimler ile dolu bir klasörüm var. Bir Google e-tablosunda Google Çizimler'in dosya adlarını buldum. Dosya adlarını Google elektronik tablosundan çıkarabilirim, dosya adlarını yineleyebilir, tüm Google çizimlerini bulabilirim ve ... burada takılıp kaldığım yer burası. Çizimleri PNG dosyalarına dönüştürmek ve PNG dosyalarını ayrı bir sürücü klasöründe saklamak istiyorum.

Şimdiye kadar sahip olduğum senaryo bu ...

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

Bunu çalıştırdığımda, tüm Google çizimleri PDF dosyalarına dönüştürülüyor ve sürücü klasörümde saklanıyor.

Yanıtlar

1 ziganotschka Aug 19 2020 at 15:02

Çizimi hangi mimeType'a dönüştürmek istediğinizi belirtmeniz gerekir

Ancak, 'dan' drawingsye dönüştürmek pngdoğrudan mümkün değildir, aşağıdaki adımları uygulamanız gerekir:

  • Dosyayı dışa aktarmak için bir dışa aktarma bağlantısı oluşturun. image/png
  • Bu bağlantıyı UrlFetchApp ile getir
  • Sonuç blobundan bir dosya oluşturun

Örneklem

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