разобрать документ Google на текст и скопировать результат на лист - PullRequest
0 голосов
/ 09 июня 2018

Я хочу проанализировать ряд документов в папке Google Drive с помощью регулярных выражений.

Документы содержат модель оборудования и серийные номера.Я хотел бы затем скопировать результаты в Google листе построчно.Я успешно справился с аналогичной задачей с электронными письмами, но безрезультатно с Google Docs.

Может кто-нибудь предложить некоторые рекомендации.Я проверил регулярные выражения в меню «найти и заменить» в Документах Google, и они работают нормально.Ниже приведена просто попытка выяснить, могу ли я получить некоторые данные и записать их в ячейку активного листа.

function write() {
var ss= SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var doc = 
DocumentApp.openById('1ZNqJjSJo1wkD3eaCRTY64g98hYEY77D4MDU6XpvA4MI');
var body = doc.getBody();
var text = body.findText('(\W|^)GSS\d{2}H(\W|$)')
  ss.getRange(1,1).setValue(text);

}

1 Ответ

0 голосов
/ 09 июня 2018

Вы хотите получить все значения, совпадающие с (\W|^)GSS\d{2}H(\W|$) в документе, и поместить результат в электронную таблицу построчно.Если мое понимание верно, как насчет этой модификации?Я думаю, что есть несколько ответов для вашей ситуации.Поэтому, пожалуйста, подумайте об этом как об одном из них.

Точки изменения:

  • Извлечение текста из документа.
  • Извлечение всех сопоставленных значений с помощью регулярного выражения.
    • Для этой ситуации я использовал RegExp # exec .
  • Поместить результат в электронную таблицу.

Измененоскрипт:

function write() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var doc = DocumentApp.openById('1ZNqJjSJo1wkD3eaCRTY64g98hYEY77D4MDU6XpvA4MI');
  var body = doc.getBody();

  // Modified script
  var text = doc.getBody().getText();
  var result = [];
  var r = /(\W|^)GSS\d{2}H(\W|$)/g;
  while ((res = r.exec(text)) !== null) { // or while (res = r.exec(text)) {
    result.push([res[0]]);
  }
  ss.getRange(ss.getLastRow() + 1, 1, result.length, 1).setValues(result);
}

Если это было не то, что вы хотите, извините.В то время, не могли бы вы предоставить пример ввода и вывода, который вам нужен?Я хотел бы изменить свой ответ.

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