Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Таблица с примером https://docs.google.com/spreadsheets/d/1rAPjEdhDjx-cfbQ3jIJGS2CezSSqLBN39fQYz4dlVcg/edit#gid=0
- ✅ Канал о Таблицах: https://t.me/google_sheets
- ✅ Чат: https://t.me/google_spreadsheets_chat
- ✅ Оглавление канала: https://goo.gl/HdS2qn
- */
- let reg_exps = [/div class="tgme_widget_message_text js-message_text" dir="auto">(.+?)<\/div/, /tgme_widget_message_views">(.+?)</, /background-image:url\('(.+?)'/];
- function main() {
- let ss = SpreadsheetApp.getActive();
- let sheet_config = ss.getSheetByName('Настройки');
- let sheet_logs = ss.getSheetByName('Логи');
- let config = sheet_config.getDataRange().getValues().slice(1).forEach((row, i) => {
- let [channel, start, n] = [row[0].match(/(.+)\//)?.[1], row[0].match(/\/(\d+)$/)?.[1], row[1]];
- if (channel && start && n) {
- let requests = create_requests(channel, start*1, n*1);
- let responses = UrlFetchApp.fetchAll(requests);
- let data = responses.map((response, i) => {
- response = response.toString();
- return [new Date(), requests[i]['url']].concat(reg_exps.map(reg_exp => response.match(reg_exp)?.[1]));
- })
- let logs = [[new Date(), requests.length]];
- sheet_config.getRange(i + 2, 3, logs.length, logs[0].length).setValues(logs);
- sheet_logs.getRange(sheet_logs.getLastRow() + 1, 1, data.length, data[0].length).setValues(data);
- }
- })
- }
- function create_requests(channel, start, n) {
- let requests = [];
- while (n) {
- n--;
- requests.push({ 'url': `${channel}/${start + n}?embed=1`, 'muteHttpExceptions': true });
- }
- return requests;
- }
- function onOpen(e) {
- SpreadsheetApp.getUi()
- .createMenu("🐧")
- .addItem("Парсим!", "main")
- .addToUi();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement