Buat file png dari Google Drawing menggunakan App Script

Aug 19 2020

Saya punya folder yang penuh dengan Google Gambar. Saya mendapatkan nama file dari Gambar Google di spreadsheet Google. Saya dapat mengekstrak nama file dari spreadsheet Google, mengulangi nama file, menemukan semua gambar Google dan ... di sinilah saya terjebak. Saya ingin mengubah gambar menjadi file PNG dan menyimpan file PNG dalam folder drive terpisah.

Ini adalah skrip yang saya miliki sejauh ini ...

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

Saat saya menjalankan ini, semua gambar Google dikonversi ke file PDF dan disimpan di folder drive saya.

Jawaban

1 ziganotschka Aug 19 2020 at 15:02

Anda perlu menentukan mimeType mana yang ingin Anda ubah gambarnya

Namun, mengonversi dari drawingsmenjadi pngtidak memungkinkan secara langsung, Anda perlu melakukan langkah-langkah berikut:

  • Buat tautan ekspor untuk mengekspor file sebagai image/png
  • Ambil tautan ini dengan UrlFetchApp
  • Buat file dari gumpalan hasil

Sampel

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