App Script를 사용하여 Google 그림에서 png 파일 만들기

Aug 19 2020

Google 드로잉으로 가득 찬 폴더가 있습니다. Google 스프레드 시트에 Google 드로잉의 파일 이름이 있습니다. Google 스프레드 시트에서 파일 이름을 추출하고, 파일 이름을 반복하며, 모든 Google 그림을 찾을 수 있습니다. 그림을 PNG 파일로 변환하고 PNG 파일을 별도의 드라이브 폴더에 저장하고 싶습니다.

이것은 내가 지금까지 가지고있는 스크립트입니다.

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

이것을 실행하면 모든 Google 그림이 PDF 파일로 변환되어 내 드라이브 폴더에 저장됩니다.

답변

1 ziganotschka Aug 19 2020 at 15:02

도면을 변환 할 mimeType 을 지정해야합니다.

그러나에서로 직접 변환 할 drawingspng는 없으므로 다음 단계를 수행해야합니다.

  • 파일을 다음으로 내보내기위한 내보내기 링크를 만듭니다. image/png
  • UrlFetchApp 으로이 링크 가져 오기
  • 결과의 Blob에서 파일 만들기

견본

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