Сценарий приложений: импорт и анализ файла HTML с диска на листы - PullRequest
1 голос
/ 27 января 2020

У меня есть куча HTML файлов на диске, но мне нужно извлечь из них таблицы и поместить их в Gsheets.

До сих пор я видел функцию ImportHTML, но она не работает с диск ссылка.

Как я могу импортировать и анализировать HTML файлы с моего диска? Спасибо

1 Ответ

1 голос
/ 28 января 2020
  • Вы хотите поместить значения таблицы из данных HTML, используя Google Apps Script и / или встроенные функции электронной таблицы.
  • Файлы HTML помещаются в ваш Диск Google.

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

Шаблон 1:

В этом шаблоне IMPORTXML используется для таблиц, развернутых с помощью веб-приложений.

Использование:

1. скопируйте и вставьте следующий скрипт в редактор скриптов.

function doGet(e) {
  var fileId = e.parameter.id;
  var html = DriveApp.getFileById(fileId).getBlob().getDataAsString();
  var html = "<sample>" + html.match(/<table[\w\s\S]+?<\/table>/gi).join("") + "</sample>";
  return ContentService.createTextOutput(html).setMimeType(ContentService.MimeType.XML);
}

2. Развертывание веб-приложений.

  1. В редакторе сценариев откройте диалоговое окно с помощью «Publi sh» -> «Развернуть как веб-приложение».
  2. Выберите «Me « для » Запустите приложение как: «.
  3. Выберите « Любой, даже анонимный » для « У кого есть доступ к приложению: «.
  4. Нажмите кнопку« Развернуть »как новую« Версия проекта ».
  5. Автоматически откройте диалоговое окно« Требуется авторизация ».
    1. Нажмите «Просмотреть разрешения».
    2. Выберите собственную учетную запись.
    3. Нажмите «Дополнительно» в разделе «Это приложение не подтверждено».
    4. Нажмите " Go to ### имя проекта ### (небезопасно) "
    5. Нажмите кнопку" Разрешить ".
  6. Нажмите" ОК ".
  7. Скопируйте URL-адрес веб-приложений. Это как https://script.google.com/macros/s/###/exec.
    • Когда вы изменили скрипт Google Apps, пожалуйста, повторно разверните его как новую версию. Этим измененный сценарий отражается в веб-приложениях. Пожалуйста, будьте осторожны.

3. Поместите формулу.

Пожалуйста, поместите следующую формулу в ячейку.

=IMPORTXML("https://script.google.com/macros/s/###/exec?id=###fileId###","//tr")
  • ###fileId### - это идентификатор файла HTML файла на Google Диске.

Шаблон 2:

В этом шаблоне таблицы HTML извлекаются из данных HTML, а таблицы помещаются в электронную таблицу с помощью API Sheets.

Использование:

1. скопируйте и вставьте следующий скрипт в редактор скриптов.

Пожалуйста, установите переменные fileId, spreadsheetId и sheetName.

function myFunction() {
  var fileId = "###";  // Please set the file ID of HTML file.
  var spreadsheetId = "###";  // Please set the Spreadsheet ID for putting the values.
  var sheetName = "Sheet1";  // Please set the sheet name for putting the values.


  // Retrieve tables from HTML data.
  var html = DriveApp.getFileById(fileId).getBlob().getDataAsString();
  var values = html.match(/<table[\w\s\S]+?<\/table>/gi);

  // Put the HTML tables to the Spreadsheet.
  var ss = SpreadsheetApp.openById(spreadsheetId);
  var sheet = ss.getSheetByName(sheetName);
  var sheetId = sheet.getSheetId();
  var rowIndex = 0;
  values.forEach(function(e) {
    var resource = {requests: [{pasteData: {html: true, data: e, coordinate: {sheetId: sheetId, rowIndex: rowIndex}}}]};
    Sheets.Spreadsheets.batchUpdate(resource, spreadsheetId);
    rowIndex = sheet.getLastRow();
  })
}

2. Включить Sheets API.

Пожалуйста, включите Sheets API в службах Advanced Google.

3. Запустите сценарий.

При запуске функции myFunction значения извлекаются из данных HTML и помещаются в электронную таблицу.

Примечание:

  • Это простые примеры сценариев. Поэтому, пожалуйста, измените их для вашей реальной ситуации.

Ссылки:

К сожалению, с Ваш вопрос, я не могу понять о ваших фактических HTML данных. Поэтому, если произошла ошибка, и это не то направление, которое вы хотите, я прошу прощения.

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