Script Google com macros что это

Содержание

Про сам процесс создания бота в интернете есть огромное количество статей, самый подробный по ссылке ниже:

Cамое важное что нужно — это API Token.

Все запросы к телеграм боту должны обслуживаться через HTTPS и должны быть представлены в следующей форме: https://api.telegram.org/bot/METHOD_NAME

То есть мне понадобится ссылка на телеграм через которую бот будет получать данные с «серверной» (гугл таблицы) стороны

Сохраняю их в скрипт:

const botToken = ‘token’ const telegramUrl = «https://api.telegram.org/bot» + botToken + «/»;

Как устроен бот

Есть два взаимоисключающих способа получения обновлений для бота — метод getUpdates и Webhooks.

Разница между ними такая же, как разница между «тянуть» и «толкать». При Webhooks бот не будет делать ничего, пока его об этом не попросит пользователь путем команд либо со своей стороны либо со стороны сервера, при getUpdates все происходит с точностью наоборот — бот сам обращается к серверу и спрашивает его на предмет изменений.

Google таблицы.Как создавать макросы и делать кнопки. Урок 9.

В силу все тех же ограничений и квот гугла, мне больше подходит Webhooks.

Предварительные действия

Для того, чтобы бот начал общаться с таблицей их необходимо связать.

Так как все общение бота происходит через https, рабочий скрипт надо «deploy as Web app» — в таком случае гугл дает ссылку на веб апп. И вот тут есть нюанс. Если коротко — каждое изменение в коде при «deploy as web app» надо деплоить заново. Это жутко неудобно когда разрабатываешь и тестируешь функционал бота, потому что каждый раз ссылка новая и в боте надо удалять текущий вебхук и прописывать новый вебхук.

Данная проблема лечится двумя способами:

  • Через создание дополнительной библиотеки
  • Через старый режим среды разработки: для этого необходимо перейти в устаревшую версию «Использовать устаревшую версию» и выбрать

И получить ссылку(1) на web app и так же ее скопировать куда-нибудь

После этого еще раз открыть «Развернуть как веб-приложение…» и нажать Disable web app

Затем снова проделать развертывание веб-приложения и еще раз скопировать ссылку(2)

Далее сравнить ссылку(1) с ссылкой(2) — ссылка(2) должна быть короче.

При таком сценарии в случае сохранения заново деплоить ничего не надо — все будет автоматически сохраняться.

Далее можно вернуться в новый режим и прописать ссылку(2) в переменную.

const googleUrl ;

Установка вебхука

Итак, у меня есть телеграм токен, телеграм ссылка для общения и гугл-ссылка для приема и передачи данных бота. Осталось их связать:

// Установка вебхука в телеграме function setWebHook() < const url = telegramUrl+»setWebhook?url utf-8″>console.log выведет что вебхук установлен. Если запустить скрипт еще раз, то со стороны телеграма придет следующий ответ:

Как отключить протект в гугле

Script Google com macros что это

Google Apps Script? Сейчас объясню!

Удаление вебхука

Тоже понадобится как по причинам описанным выше, так и просто потому, что в функционале бота в какой-то момент не будет необходимости. Скрипт так же выполняется единожды

// Удаление вебхука в телеграме function deleteWebHook() < const url = telegramUrl+»deleteWebhook?url wp-block-heading»>Общение бота с таблицей — doPost(e)

И вот я подошел к самой интересной части. Пути прописаны, вебхук установлен. Пора получить от бота что-то в таблицу.

function doPost(e)< const main = JSON.parse(e.postData.contents); // получаем данные из телеграм бота wsDebug.getRange(1,1).setValue(JSON.stringify(main, null, 5)); >

Все что приходит от телеграма на гугловый web app есть объект е и он имеет следующие параметры:

e.postData.contents — основное «тело», в котором содержится все необходимое, что приходит от телеграм бота.

И тут надо сделать оговорку: гугл скрипт не позволяет делать console.log в функции doPost()

Чтобы увидеть что приходит со стороны телеграма я создал лист «Debug»

const wsDebug = ss.getSheetByName(«Debug»)

и в первую ячейку записываю все то, что пришло

wsDebug.getRange(1,1).setValue(JSON.stringify(main, null, 5));

Что такое JSON.parse

Обычно JSON используется для обмена данными с / на веб-сервер. При получении данных с веб-сервера такие данные всегда являются строкой. JSON.parse делает их объектом JavaScript.

Что такое JSON.stringify

При отправке данных на веб-сервер данные должны быть строкой. Преобразование объекта JavaScript в строку осуществляется с помощью JSON.stringify.

А зачем тогда строку сначала парсить в объект, а потом обратно конвертить в строку?

Все дело в том, что если записать в ячейку объект то ИМЕННО вид он будет иметь следующий т.е. неудобно читаемый:

Если же записывать через JSON.stringify(main, null, 5), то строка вид будет иметь «приятный и понятный»:

Итак я получаю данные от телеграма. Теперь их надо как-то обработать и куда-то записать. А еще надо в телеграм передать данные. И об этом — в следующей части

Источник: dmitriizhuk.ru

Google Sheets Macros

Google Sheets lets you record macros that duplicate a specific series of UI interactions that you define. Once you’ve recorded a macro, you can link it to a keyboard shortcut in the form Ctrl+Alt+Shift+Number . You can use that shortcut to quickly execute the exact macro steps again, typically in a different place or on different data. You can also activate the macro from the Google Sheets Extensions > Macros menu.

When you record a macro, Google Sheets automatically creates an Apps Script function (the macro function) that replicates the macro steps. The macro function is added to an Apps Script project bound to the sheet, in a file titled macros.gs . In the event that there is already a project file bound to the sheet with that name, the macro function is appended to it. Google Sheets also automatically updates the script project manifest, recording the name and keyboard shortcut assigned to the macro.

Since every recorded macro is defined entirely within Apps Script, you can edit them directly within the Apps Script editor. You can even write macros from scratch in Apps Script, or take functions you’ve already written and turn them into macros.

Creating macros in Apps Script

You can take functions written in Apps Script and use them as macro functions. The easiest way to do this is by importing an existing function from the Google Sheets editor.

Google earth не подключается

Alternatively, you can create macros within the Apps Script editor by following these steps:

  1. In the GGoogle Sheets UI, select Extensions >Apps Script to open the script bound to the sheet in the AApps Script editor.
  2. Write the macro function. Macro functions should take no arguments and return no values.
  3. Edit your script manifest to create the macro and link it to the macro function. Assign it a unique keyboard shortcut and name.
  4. Save the script project. The macro is then available for use in the sheet.
  5. Test the macro function in the sheet to verify that functions as intended.

Editing macros

You can edit macros attached to a sheet by doing the following:

  1. In the Google Sheets UI, select Extensions >Macros >Manage macros.
  2. Find the macro you want to edit and select more_vert > Edit macro. This opens the Apps Script editor to the project file containing the macro function.
  3. Edit the macro function to change the macro behavior.
  4. Save the script project. The macro is then available for use in the sheet.
  5. Test the macro function in the sheet to verify that functions as intended.

Importing functions as macros

If there is already a script bound to a sheet, you can import a function in the script as a new macro and then assign it a keyboard shortcut. You can do this by editing the manifest file and adding another element to the sheets.macros[] property.

Alternatively, follow these steps to import a function as a macro from the Sheets UI:

  1. In the Google Sheets UI, select Extensions >Macros >Import.
  2. Select a function form the list presented and then click Add function.
  3. Select clear to close the dialog.
  4. Select Extensions >Macros >Manage macros.
  5. Locate the function you just imported in the list. Assign a unique keyboard shortcut to the macro. You can also change the macro name here; the name defaults to the name of the function.
  6. Click Update to save the macro configuration.

Manifest structure for macros

The following manifest file example snippet shows the section of a manifest that defines Google Sheets macros. The sheets section of the manifest defines the name and keyboard shortcut assigned to the macro and the name of the macro function.

Note: Manifests include other components that relate to Apps Script properties. The fields under the sheets relate directly to Sheets functionality. This example is just a portion of a full manifest file and is not a fully functional manifest.

See the Manifest structure guide for more details on how Apps Script manifests are constructed. The Sheets and Macro sections describe the fields that define Sheets macros.

Best practices

When creating or managing macros in Apps Script, it is recommended that you adhere to the following guidelines.

  1. Macros are more performant when they are light-weight. Where possible, limit the number of actions a macro takes.
  2. Macros are best suited for rote operations that need to be repeated frequently with little or no configuation. For other operations, consider using a custom menu item instead.
  3. Always remember that macro keyboard shortcuts must be unique, and a given sheet can only have ten macros with shortcuts at any one time. Any additional macros can only be executed from the Extensions >Macros menu.
  4. Macros that make changes to a single cell can be applied to a range of cells by first selecting the full range and then activating the macro. This means it is often unnecessary to create macros that duplicate the same operation across a predefined range of cells.
Google кто такие франки

Things you can’t do

There are a few restrictions on what you can do with macros:

Use macros outside bound scripts

Macros are defined in scripts bound to specific Google Sheets. Macro definitions are ignored if defined in a standalone script or web app.

Define macros in Sheets add-ons

You cannot distribute macro definitions using a Sheets add-on. Any macro definitions in a Sheets add-on project are ignored by users of that add-on.

Distribute macros in script libraries

You cannot distribute macro definitions using Apps Script libraries.

Use macros outside of Google Sheets

Macros are only a feature in Google Sheets, and do not exist for Google Docs, Forms, or Slides.

Send feedback

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2023-04-13 UTC.

Источник: developers.google.com

Dev Автоматизируем Google Документы на Google Apps Script

Favorite

Автоматизируем Google Документы на Google Apps Script

3 примера кода, которые стоит сохранить на будущее.

Продолжаем рассказывать о приемах автоматизации работы с сервисами Google. Многие думают о Google Docs, как о приложении предназначенном для просмотра таблиц, присланных по почте. Но это не так. У этого табличного процессора есть больше сотни встроенных формул для расчетов, обширный набор инструментов для форматирования и обработки данных.

Одно из важных достоинств Google Docs, не считая коллективной работы над документом из всех уголков планеты — возможность использовать Google Apps Script для автоматизации и интеграции с другими сервисами Google.

Попробовать рецепты из статьи очень просто:

  1. Заходим на docs.google.com и авторизируемся;
  2. Создаем новую электронную таблицу;
  3. Открываем Инструменты ->Редактор скриптов;
  4. Вбиваем в окошко код из примеров и вносим свои правки;
  5. Нажимаем на кнопку Запустить и даем скрипту все разрешения, которые он попросит.

Предположим, нам нужно составить отчет о тратах на коммунальные услуги в течение трех лет. У нас есть стопка квитанций и данные из них мы хотим занести в электронные таблицы на Google Sheet. Для каждого года нужно создать отдельный файл с 12 листами-месяцами. На каждом листе сделать шаблон для записи значений и добавить немного дизайна. А когда все данные будут внесены, построить график для их визуализации.

Такая структура документа не слишком удобна для хранения данных, но рассмотрение этой задачи поможет понять, каким образом Google Apps Script взаимодействует с электронными таблицами.

Генерация документов

Создадим документы «Коммунальные счета 2012», «Коммунальные счета 2013» и «Коммунальные счета 2014». В каждом документе сделаем листы с названиями месяцев, на каждом листе в первом столбце запишем виды коммунальных услуг.

[jscript]function createTables() years=[«2012″,»2013″,»2014»];
months = [«Январь», «Февраль», «Март», «Апрель», «Май», «Июнь», «Июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», «Декабрь»];
services = [«Газ», «Свет», «Вода», «Квартплата», «Телефон», «Интернет», «Охрана»];
for (j=0;j <=years.length-1;j++)
tableDoc = SpreadsheetApp.create(«Коммунальные счета » + years[j]);
for (i=0;i <=months.length-1;i++)
if (i==0)
currentSheet = tableDoc.getActiveSheet();
currentSheet.setName(months[i]);
>
else
currentSheet = tableDoc.insertSheet();
currentSheet.setName(months[i]);
>
for (z=0;z <=services.length-1;z++)
row=z+1;
currentSheet.getRange(‘A’ + row ).setValue(services[z]);
>
>
>
>
[/jscript]

Гугл Хром управляется вашей организацией как отключить

Выполнение скрипта может занять пару минут, наберитесь немного терпения.

Редактирование файлов

Создавать файлы мы научились, а теперь разберемся как открывать их и редактировать. Нам нужно на всех листах файла «Коммунальные счета 2014» покрасить заполненные ячейки первого столбца в голубой цвет и сделать так, чтобы в первой незаполненной его ячейке было слово «Итого», а ячейке справа от него формула для вычисления этого значения.

Перед выполнением скрипта нам нужно открыть Google Drive и выяснить ID нужного нам документа.

[jscript]function editTables() months = [«Январь», «Февраль», «Март», «Апрель», «Май», «Июнь», «Июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», «Декабрь»];
services = [«Газ», «Свет», «Вода», «Квартплата», «Телефон», «Интернет», «Охрана»];
tableDoc = SpreadsheetApp.openById(«1RzIv25ZnSEUI3cyu-h-x0JKnkScPEA5WwiEDqX-stEE»);
for (i=0;i <=months.length-1;i++)
if (i==0)
currentSheet = tableDoc.getActiveSheet();
>
else
currentSheet = tableDoc.getSheetByName(months[i]);
>
for (z=0;z <=services.length;z++)
row =z+1;
currentSheet.getRange(«A»+row).setBackground(«#75aad8»);
>
lastRow = services.length+2;
currentSheet.getRange(«A» + lastRow).setValue(«Итого:»);
currentSheet.getRange(«B» + lastRow).setValue(«=sum(b1:b»+(services.length+1)+»)»);
>
>[/jscript]

Снимок экрана 2015-11-30 в 18.04.07

Построение графиков

А теперь создадим в документе «Коммунальные счета 2012» еще один новый лист и построим на нем диаграмму для визуального сравнения итоговых счетов по месяцам.

[jscript]function insertChart() months = [«Январь», «Февраль», «Март», «Апрель», «Май», «Июнь», «Июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», «Декабрь»];
services = [«Газ», «Свет», «Вода», «Квартплата», «Телефон», «Интернет», «Охрана»];
tableDoc = SpreadsheetApp.openById(«1RzIv25ZnSEUI3cyu-h-x0JKnkScPEA5WwiEDqX-stEE»);
endSums = new Array();
for (i=0;i <=months.length-1;i++)
if (i==0)
currentSheet = tableDoc.getActiveSheet();
>
else
currentSheet = tableDoc.getSheetByName(months[i]);
>
lastRow = services.length+2;
endSums[i] = currentSheet.getRange(«B» + lastRow).getValue();
>
sheetIndex = months.length + 1;
currentSheet = tableDoc.insertSheet(sheetIndex);
currentSheet.setName(«Итоги года»);
for (z=0;z <=months.length-1;z++)
row = z+1;
currentSheet.getRange(«A» + row).setValue(months[z]);
currentSheet.getRange(«B» + row).setValue(endSums[z]);
>
var chart = currentSheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(currentSheet.getRange(«A1:B» + months.length))
.setPosition(1, 3, 0, 0)
.setOption(«title», «Расход за год»)
.build();
currentSheet.insertChart(chart);
>[/jscript]

Снимок экрана 2015-11-30 в 18.44.45

В строке «.setChartType(Charts.ChartType.BAR)» мы указали тип графика. В Google Docs есть и другие типы графиков:

Как выглядит каждый тип графика можно посмотреть, заменив слова BAR на одно из вышеперечисленных в последнем примере.

    • 4 лайфхака Gmail и Google Apps Script
    • Google Apps Script для Docs в примерах
    • Планируем жизнь с Google Calendar и Google Apps Script
    • Простые автоматизации для Google Drive

    (4 голосов, общий рейтинг: 4.75 из 5)
    Хочешь больше? Подпишись на наш Telegram.

    Favorite

    3 примера кода, которые стоит сохранить на будущее. Продолжаем рассказывать о приемах автоматизации работы с сервисами Google. Многие думают о Google Docs, как о приложении предназначенном для просмотра таблиц, присланных по почте. Но это не так. У этого табличного процессора есть больше сотни встроенных формул для расчетов, обширный набор инструментов для форматирования и обработки данных.

    • Google,
    • автоматизации,
    • инструкции,
    • полезный в быту софт,
    • программирование,
    • скрипты

    Ирина Чернова

    Госдума хочет повысить цены в App Store

    Samsung выплатит Apple $548 млн компенсации

    Обзор ноутбука-трансформера Acer Spin 5, который можно вывернуть наизнанку

    Посмотрел «Три мушкетёра: Д’Артаньян» в кинотеатре. Он лучше советской легенды с Боярским?

    Посмотрел фильм «Тетрис» про советского инженера. Хорошее кино, в котором слишком много «клюквы»

    Обзор умной настольной лампы Yeelight с Алисой и Siri. Есть беспроводная зарядка, удобно

    Появились удлинители кабелей USB-C. Купил и проверил, падает ли скорость заряда

    Комментарии 40

    Бату Караев 4 декабря 2015
    Подскажите кто может написать небольшой математический скрипт за деньги для гугл док
    Ирина Чернова 4 декабря 2015
    Tsvetkovr 4 декабря 2015
    Ссылка на “Google Apps Script для Docs в примерах” не работает.

    Бату Караев 4 декабря 2015

    Хех!После коммента тут разместил задачу на бирже и уже имею нужный скрипт!
    Фрилансер написал мне код который прибавляет нужный результат вычислений ко всем ячейкам столбца.
    Не ожидал что так быстро решу свою задачу,обошлось мне в 150грн.

    Как восстановить закладки в браузере Гугл

    SuperSega 4 декабря 2015
    добавил в закладки
    Ирина Чернова 5 декабря 2015
    trakturisto 8 декабря 2015
    Ирина Чернова 8 декабря 2015
    Max K. 5 декабря 2015
    Очень интересные темы со скриптами, только примеры какие-то…
    Ирина Чернова 6 декабря 2015

    Max K. 8 декабря 2015
    Ирина Чернова 8 декабря 2015
    Sergey 6 декабря 2015
    Побольше бы комментариев в коде
    Sergey 6 декабря 2015

    Еще понять как необходимые функции находить.
    Ирина Чернова 6 декабря 2015
    Sergey 6 декабря 2015

    На данный момент пока не знаю=) Например, таймер поставить между 3мя скриптами. А запуск и остановку скрипта по кнопке из таблицы можно осуществить или это другими способами делается? Не думаю, что корректно его всегда запускать по кнопке плей из редактора.

    Ирина Чернова 6 декабря 2015
    Ирина Чернова 6 декабря 2015
    Ирина Чернова 6 декабря 2015
    Ирина Чернова 6 декабря 2015
    Ирина Чернова 6 декабря 2015

    Sergey 6 декабря 2015
    Ирина Чернова 7 декабря 2015
    Sergey 7 декабря 2015
    Ирина Чернова 7 декабря 2015
    Ирина Чернова 7 декабря 2015

    Sergey 7 декабря 2015
    Ирина Чернова 7 декабря 2015
    Sergey 13 декабря 2015

    Ирина, добрый вечер. С функциями меню из 3 пунктов, я так и не понял что делать. Подумал, что проще выбирать каждую функцию из редактора скриптов и запускать отдельно. Смысл такой, у меня супруга на работе занимается информационной рассылкой, я решил ей немного упростить жизнь (а себе усложнить) т. к. она всё делает через копию.

    Плюс у googlе есть ограничение на рассылку – 500 в день, а человек около 1800, поэтому я решил разделить на 3 части. Что то я сделал неправильно, подскажите?
    function groupDelivery1() // Собираем необходимую информацию из файла
    var info = SpreadsheetApp.getActiveSpreadsheet();
    var subject = info.getSheetByName(“Лист1”).getRange(“B1”).getValue();
    var text = info.getSheetByName(“Лист1”).getRange(“B2”).getValue();
    var /> // Указываем прикрепляемый файл
    var file = DriveApp.getFileById(id);
    // Открываем базу с адресами
    var tableDoc = SpreadsheetApp.openById(“18scdeAR08HW_7vl38YBaZCIrRo7bNEG9tWARJuSOimU”);
    var Sheet1 = tableDoc.getSheetByName(“Лист1”);
    var dataRange = Sheet1.getRange(1, 1, rowsAmount, 2);
    // Число 300 надо заменить на число адресатов в таблице с адресами
    var rowsAmount = 300;
    var data = dataRange.getValues();
    for (i in data) var row = data[i];
    var emailAddress = row[0];
    // Поддкорректируйте обращение и текст письма под свои нужды
    var messageText = row[1] + text;
    MailApp.sendEmail(emailAddress, subject, messageText, );
    >
    >
    function groupDelivery2() // Собираем необходимую информацию из файла
    var info = SpreadsheetApp.getActiveSpreadsheet();
    var subject = info.getSheetByName(“Лист1”).getRange(“B1”).getValue();
    var text = info.getSheetByName(“Лист1”).getRange(“B2”).getValue();
    var /> // Указываем прикрепляемый файл
    var file = DriveApp.getFileById(id);
    // Открываем базу с адресами
    var tableDoc = SpreadsheetApp.openById(“18scdeAR08HW_7vl38YBaZCIrRo7bNEG9tWARJuSOimU”);
    var Sheet1 = tableDoc.getSheetByName(“Лист1”);
    var dataRange = Sheet1.getRange(1, 1, rowsAmount, 2);
    // Число 300 надо заменить на число адресатов в таблице с адресами
    var rowsAmount = 300;
    var data = dataRange.getValues();
    for (i in data) var row = data[i];
    var emailAddress = row[0];
    // Поддкорректируйте обращение и текст письма под свои нужды
    var messageText = row[1] + text;
    MailApp.sendEmail(emailAddress, subject, messageText, );
    >
    >
    function groupDelivery3() // Собираем необходимую информацию из файла
    var info = SpreadsheetApp.getActiveSpreadsheet();
    var subject = info.getSheetByName(“Лист1”).getRange(“B1”).getValue();
    var text = info.getSheetByName(“Лист1”).getRange(“B2”).getValue();
    var /> // Указываем прикрепляемый файл
    var file = DriveApp.getFileById(id);
    // Открываем базу с адресами
    var tableDoc = SpreadsheetApp.openById(“18scdeAR08HW_7vl38YBaZCIrRo7bNEG9tWARJuSOimU”);
    var Sheet1 = tableDoc.getSheetByName(“Лист1”);
    var dataRange = Sheet1.getRange(1, 1, rowsAmount, 2);
    // Число 300 надо заменить на число адресатов в таблице с адресами
    var rowsAmount = 300;
    var data = dataRange.getValues();
    for (i in data) var row = data[i];
    var emailAddress = row[0];
    // Поддкорректируйте обращение и текст письма под свои нужды
    var messageText = row[1] + text;
    MailApp.sendEmail(emailAddress, subject, messageText, );
    >
    >

    Ирина Чернова 14 декабря 2015

    Источник: www.iphones.ru

    Рейтинг
    Загрузка ...