• Установка даты в соседний столбец по флажку true?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Добавьте скрипт к вашей Таблице

    /**
     *
     */
    function onEdit(e) {
      const sheetName = 'Sheet6'; // Имя листа, который отслеживается
      const colToStamp = 7; // Номер колонки для даты
    
      if (e && e.range && e.range.getRow() > 9 && e.range.getColumn() == 6) {
        const sheet = e.range.getSheet();
        if (sheet.getName() == sheetName) {
          const writeVal =
            e.value == true || e.value == 'TRUE' || e.value == 'ИСТИНА'
              ? new Date()
              : '';
          sheet.getRange(e.range.rowStart, colToStamp).setValue(writeVal);
          SpreadsheetApp.getActive().toast('Обновлено');
        }
      }
    }


    https://github.com/contributorpw/google-apps-scrip...

    Пример https://docs.google.com/spreadsheets/d/1LZi-bTd8-P...
    Ответ написан
    Комментировать
  • Как отправить почтовое оповещение при заполнении ячейки Гугл-таблицы?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Воспользуйтесь триггером onEdit(event). Вот заготовка кода:
    function onEdit(event) {
    	//Возникает при изменении ячейки
    	var ss = event.source.getActiveSheet();//Текущий лист
      	var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
    	var row = event.range.getRow();							//Номер строки
    	var col = event.range.getColumn();						//Номер столбца
    	var newValue = event.value;								//Новое значение
    	var oldValue = event.oldValue;							//Старое значение
    	
      if (["Лист1","Лист2"].indexOf(ss.getName())==-1) return;	//Указываем на каких листах должен работать скрипт
    	
    	//Что-то делаем...
      };

    Останется прописать отправку письма. Это делается с помощью MailApp
    Скорее всего простой триггер не даст отправить письмо, тогда надо сделать обычный триггер и навесить его на onEdit().
    Ответ написан
    2 комментария
  • Где можно посмотреть побольше примеров использования jQuery совместно с google apps script?

    oshliaer
    @oshliaer
    Google Products Expert
    Между этими техниками нет прямой связи.

    JQuery вы можете использовать только в клиентском исполнении интерфейсов. Конкретно для Таблиц: в диалоговых окнах и боковой панели.

    Любые примеры будут актуальны. Данные вы все равно будете передавать через клиентский API.
    Ответ написан
    Комментировать
  • Как запустить onEdit из редактора или программным способом?

    oshliaer
    @oshliaer
    Google Products Expert
    Насколько я понимаю, вы пробуете вызвать функцию onEdit из другой функции или из редактора.

    Разбор ошибки

    Ошибка
    TypeError: Cannot read property 'range' of undefined (строка 3, файл se)

    Означает, что в некотором файле se в 3й строке есть некоторая переменная со значением undefined свойство range которой прочитать невозможно. Тут все очевидно - у undefined нет свойств.

    Если посмотреть на код, то становится ясно, что имя этой переменной e. И мы ее получаем с системную функцию onEdit. Это означает, что система сама передает контекст в эту функцию.

    ОК. Значит, чтобы протестировать эту функцию, нужно передать параметр самостоятельно.

    Например,

    /**
     * Тестирование триггера для события EDIT
     */
    function runOnEdit() {
      var source = SpreadsheetApp.getActive();
      var range = source.getRangeByName('Sheet!!B26');
      /**
       * @type {GoogleAppsScript.Events.SheetsOnEdit}
       */
      var e = {
        authMode: ScriptApp.AuthMode.LIMITED,
        oldValue: undefined, // ну или что хотите
        range: range,
        value: range.getValue(),
        source: source,
        triggerUid: 0,
        user: Session.getActiveUser(),
      };
    
      onEdit(e);
    }
    
    /**
     *
     * @param {GoogleAppsScript.Events.SheetsOnEdit} e
     */
    function onEdit(e) {
      // Работает простой триггер
    }


    Проверьте - этот код будет работать точно так же, как если бы пользователь внес изменения в Таблице.
    Ответ написан
    1 комментарий
  • Как импортировать данные из текстового файла, который ежедневно сохраняется на Диск Гугл?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Сделайте функцию, повесьте её на триггер по времени (ежедневный). В функции:
    1) Открыть итератор файлов с определенным именем
    var fileIterator = DriveApp.getFilesByName(fileName);

    2) Получить содержимое файла(ов):
    while(fileIterator.hasNext()){
      var textFromFile = fileIterator.next().getAs(ContentService.MimeType.TEXT);
    };

    3) Записать данные куда нужно
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName(name).getRange(row, column).setValue(textFromFile );
    Ответ написан
    Комментировать
  • Как использовать модуль написанный на PHP в google script?

    oshliaer
    @oshliaer
    Google Products Expert
    Никак. Google Apps Script - это язык программирования. Даже не все модули nodejs можно сразу поднять в среде скриптов.

    Максимально без заморочек:
    • Опубликуйте веб-сервер php с нужным модулем и обвязкой по параметрам
    • Делайте запросы из скриптов
    Ответ написан
    Комментировать
  • Google Apps Script с чего начать изучение?

    @stomaksapp
    Как на счет русскоязычного сайта именно на эту тему: G-Apps-Script
    Ответ написан
    Комментировать