Google App Script - OCR тянет страницу входа в Google вместо нужного мне контента - PullRequest
0 голосов
/ 07 сентября 2018

У меня проблемы с извлечением OCR

Предполагается, что скрипт извлекает ссылку на изображение из ячейки в листе Google и пытается извлечь из него OCR, но сгенерированный файл OCR продолжает получать страницу входа в Google вместо изображения, которое мне нужно (и я авторизовался ...)

Есть мысли о том, почему это может происходить?

Кроме того, если бы я хотел поместить файлы OCR в их собственную папку, как бы я поступил?

Редактировать: Общий код

var extract_sheet = spreadsheet.getSheetByName("Extract Data");
var sheet = SpreadsheetApp.setActiveSheet(extract_sheet);
var startRow = 2;  // First row of data to process
var numRows = 150;   // Number of rows to process

function doExtract() {
  var dataRange = sheet.getRange(startRow, 1, numRows, 5)
  var data = dataRange.getValues();
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];
    var file_link = row[4];
    var extracted_data = row[6];
    var ocr_file_link = row[7];

    var valueURL = sheet.getRange(startRow + i, 4).getValue();

    var valueURLlength = valueURL.length;
    if (valueURLlength != 0) {
      var image = UrlFetchApp.fetch(valueURL).getBlob();

      var file = {
        title: 'OCR File',
        mimeType: 'image/png'
      };

      // OCR is supported for PDF and image formats
      file = Drive.Files.insert(file, image, {ocr: true});
      var doc = DocumentApp.openByUrl(file.embedLink);
      var body = doc.getBody().getText();
      //Get link Doc that Generated
      sheet.getRange(startRow + Number(i), 6).setValue(file.embedLink);
      //Get Content of Doc that Generated
      sheet.getRange(startRow + Number(i), 7).setValue(body);
    }
  }
}

Вот как мы решили эту проблему

Оказывается, мне не нужно было покидать диск Google, поэтому я мог использовать идентификатор файла диска вместо FetchURL.

Итак, я заменил:

var image = UrlFetchApp.fetch(valueURL).getBlob();

с var image = DriveApp.getFileById(file_ID).getBlob();

И добавил var file_ID = row[1]; после var row = data[i];

Надеюсь, это поможет другим людям, которые останавливаются с подобной проблемой! Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...