#node.js #web-scraping #google-sheets
#node.js #очистка веб-страниц #google-sheets
Вопрос:
Может кто-нибудь дать мне представление о том, как можно выполнить очистку данных со страницы Google Sheets, которая мне не принадлежит? Использование API не вариант.
Я вижу много руководств о том, как ИСПОЛЬЗОВАТЬ листы для хранения данных веб-очистки, но ничего о том, как ПОЛУЧИТЬ информацию СО страницы Sheets
Надеюсь, я смогу сделать это с помощью node.js . Кто-нибудь знает лучший способ сделать это?
Комментарии:
1. О
how one might go about scraping data from a Google Sheets page that is not owned by me
, могу я спросить вас о текущей ситуации? Потому что, если электронная таблица не является общедоступной, ваша цель не может быть достигнута.2. Это общедоступно. Я слишком много думаю об этом? Может быть, я должен просто подойти к нему, как к любой другой веб-странице.
3. Чтобы использовать API, у него должны быть учетные данные, созданные через облачную консоль Google, правильно? Я не думаю, что владельцы готовы сделать это за меня. Пожалуйста, поправьте меня, если я неправильно понимаю. Я изучу сценарий приложений, спасибо.
4. Извините. У меня должно было быть еще одно подтверждение. Из вашего ответа я понял, что электронная таблица, которую вы хотите получить, является общедоступной. В этом случае электронная таблица является общедоступной, а не публикуется в Интернете? Или электронная таблица доступна для общего доступа в качестве веб-публикации? Это также важный момент для извлечения значений.
5. Итак, можете ли вы подтвердить следующие конечные точки? 1.
https://docs.google.com/spreadsheets/d/{spreadsheetId}/edit?usp=sharing
2.https://docs.google.com/spreadsheets/d/{spreadsheetId}/pubhtml
Не могли бы вы сказать мне, к какой конечной точке вы можете получить доступ? Или оба? Исходя из этого результата, я хотел бы предложить пример сценария.
Ответ №1:
Я считаю, что ваша цель заключается в следующем.
- Вы хотите получить значения из общедоступной электронной таблицы Google.
- Вы хотите добиться этого с помощью Node.js .
- Из
trying /edit?usp=sharing yielded /edit#gid=0, and /pubhtml yielded page stating: "We're sorry. This document is not published."
, было обнаружено, что электронная таблица Google общедоступна, что не соответствует веб-публикации.
Шаблон 1:
В этом шаблоне метод «spreadsheets.values.get» в API Sheets используется с ключом API. Перед запуском скрипта, пожалуйста, извлеките свой ключ API. Ссылка
Пример сценария:
const request = require("request");
const apiKey = "###"; // Please set your API key.
const spreadsheetId = "###"; // Please set the Spreadsheet Id.
request.get(
{
url:
`https://sheets.googleapis.com/v4/spreadsheets/${spreadsheetId}/values/A:Z?key=${apiKey}`,
json: true,
},
(err, res, body) => {
if (err) {
console.log(body);
return;
}
console.log(body.values);
}
);
-
При запуске вышеупомянутого скрипта значения в ячейках
A:Z
1-й вкладки возвращаются из общедоступной электронной таблицы в виде 2-мерного массива. -
Если вы хотите получить другие вкладки, пожалуйста, извлеките имена листов, используя метод spreadsheets.get в API Sheets. Конечная точка этого заключается в следующем.
https://sheets.googleapis.com/v4/spreadsheets/{spreadsheetId}?fields=sheets.properties.titleamp;key={apiKey}
Шаблон 2:
В этом шаблоне используются веб-приложения, созданные с помощью Google Apps Script.
Использование:
Пожалуйста, выполните следующие действия.
1. Создайте новый проект скрипта Google Apps.
Пример сценария веб-приложений — это сценарий Google Apps. Поэтому, пожалуйста, создайте проект скрипта Google Apps.
Если вы хотите создать его напрямую, пожалуйста, перейдите к https://script.new /. В этом случае, если вы не вошли в Google, откроется экран входа в систему. Поэтому, пожалуйста, войдите в Google. При этом открывается редактор сценариев Google Apps Script.
2. Подготовьте сценарий.
Пожалуйста, скопируйте и вставьте следующий скрипт (скрипт Google Apps) в редактор сценариев. Этот скрипт предназначен для веб-приложений.
function doGet(e) {
const spreadsheetId = e.parameter.spreadsheetId;
const ss = SpreadsheetApp.openById(spreadsheetId);
const values = ss.getSheets().map(s => ({sheetName: s.getSheetName(), values: s.getDataRange().getValues()}));
return ContentService.createTextOutput(JSON.stringify(values));
}
3. Развертывание веб-приложений.
- В редакторе сценариев откройте диалоговое окно с помощью «Опубликовать» -> «Развернуть как веб-приложение».
- Выберите «Я» для «Выполнить приложение как:».
- Выберите «Любой, даже анонимный» для «Кто имеет доступ к приложению:».
- Нажмите кнопку «Развернуть» как новую «версию проекта».
- Автоматически открывается диалоговое окно «Требуется авторизация».
- Нажмите «Просмотреть разрешения».
- Выберите собственную учетную запись.
- Нажмите «Дополнительно» в разделе «Это приложение не проверено».
- Нажмите «Перейти к ### название проекта ### (небезопасно)»
- Нажмите кнопку «Разрешить».
- Нажмите «ОК».
- Скопируйте URL веб-приложений. Это как
https://script.google.com/macros/s/###/exec
.- Когда вы изменили сценарий Google Apps, пожалуйста, повторно разверните его как новую версию. При этом измененный скрипт отображается в веб-приложениях. Пожалуйста, будьте осторожны с этим.
4. Тестирование веб-приложений с помощью Node.js .
Пожалуйста, получите доступ к URL-адресу ваших веб-приложений с помощью браузера, указав параметры запроса следующим образом. Когда вы уже вошли в Google, запускается скрипт веб-приложений.
const request = require("request");
const spreadsheetId = "###"; // Please set the Spreadsheet Id.
const url = "https://script.google.com/macros/s/###/exec"; // Please set the URL of Web Apps.
request.get(
{
url: `${url}?spreadsheetId=${spreadsheetId}`,
json: true,
},
(err, res, body) => {
if (err) {
console.log(body);
return;
}
console.log(body);
}
);
-
При запуске вышеупомянутого скрипта возвращается следующий результат.
[ sheetName: 'Sheet1', values: [ [Array], [Array], [Array],,, ] }, { sheetName: 'Sheet2', values: [ [Array], [Array], [Array],,, ] }, , , , ]
Примечание:
- Когда вы изменили сценарий веб-приложений, пожалуйста, повторно разверните веб-приложения как новую версию. При этом последний скрипт отображается в веб-приложениях. Пожалуйста, будьте осторожны с этим.
- Сценарий Google Apps — это простой пример сценария для объяснения метода достижения вашей цели. Поэтому, пожалуйста, измените его для вашей реальной ситуации.
Ссылки:
Комментарии:
1. Это так хорошо написано и всеобъемлюще! Мне жаль говорить, что я отложил этот проект на данный момент и углубился в другой, поэтому я не смогу попробовать его сразу, но я с нетерпением жду возможности приступить к нему через несколько недель. Спасибо!
2. @AveryFreeman Спасибо за ответ. Если мое предложение не было полезным для вашей ситуации, я приношу свои извинения.