Получение электронной почты при вставке строк в таблицы Google

У меня есть лист Google, где я хотел бы получать уведомления о любых вставленных в него новых строках/строках.

Есть ли какое-либо расширение, которое может справиться с этим, или я должен использовать скрипт Google Apps, поскольку я новичок в этом и никогда не использовал его раньше.

Имейте в виду, что предоставленные решения не работают, если вставка строки не выполняется реальным пользователем. Вставки, выполняемые сценариями, не генерируют триггеры.

Cooper 09.12.2020 20:58
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
1
252
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Я не знаю расширения/надстройки, которое бы справилось с этим, но вы можете сделать это с помощью скрипта.

Ниже будет отправлено электронное письмо по триггеру, который предупредит вас о значениях в столбце A любых новых добавленных строк. Затем он устанавливает значение в столбце c, чтобы сказать, что электронное письмо было отправлено, поэтому, когда скрипт снова запускается, он не принимает их.

function sendEmail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('Sheet1'); //<-- Change sheet name
  var rng = sh.getDataRange();
  var val = rng.getDisplayValues();
  var lr = rng.getLastRow();
  var blank = "";
  var match = false;
  var body = "Hello, "+"\n\n"+"A row with"; //<-- change to anything
  for (var i = 1; i < lr; i++) {
    if (val[i][0] != blank && val[i][2] != "Sent") { //<-- 0 refers to value in column a (A=0 B=1 C=2 etc) It also checks here column C for if it has "Sent" in it
      var bodyVal = val[i][0];
      body = body+"\n - "+bodyVal; //<-- use this to add a value from that row to email body
      match = true;
      sh.getRange(i+1,3).setValue('Sent'); //<-- where to set the "Sent" value (change above as well)
    }
  }
  body = body+"\n has been added.";
  if (match) {
    MailApp.sendEmail({
      to: "[email protected]", //<-- change email
      subject: "Reminder", //<-- email subject
      body: body
    });
  }
}

спасибо за этот полезный ответ, но предназначена ли эта часть //<-- 0 refers to value in column a (A=0 B=1 C=2 etc) It also checks here column C for if it has "Sent" in it для упоминания ценности? в моем случае я хочу, чтобы вся строка/строки были вставлены

αԋɱҽԃ αмєяιcαη 09.12.2020 17:10

тоже получаю TypeError: Cannot read property 'getDataRange' of null (line 4, file "Code")

αԋɱҽԃ αмєяιcαη 09.12.2020 17:16

Вам нужно будет изменить имя листа с «Лист1». Чтобы сделать всю строку, если вы измените var bodyVal на sh.getRange(i+1,1,1,2).getValues(); - это вставит всю строку в электронное письмо с каждой ячейкой, разделенной запятой. Вы можете изменить последнее число (2) на количество столбцов, которые вы хотите включить.

Gav 09.12.2020 17:19
Ответ принят как подходящий

Объяснение:

Вы ищете триггер, который будет активирован при вставке новой строки.

  • Следующий скрипт отправит электронное письмо, когда в Sheet1 будет вставлена ​​новая строка. Смело меняйте название листа: sh.getName()=='Sheet1'.

Решение:

function sendEmailRow(e) {
 const sh = e.source.getActiveSheet();  
 if (sh.getName()=='Sheet1' && e.changeType === 'INSERT_ROW') {
  MailApp.sendEmail({
      to: "[email protected]", 
      subject: "A new row has been added",
      body: "New row!"
    });
  }
}

Монтаж

  • Скопируйте и вставьте приведенный выше код в пустой скрипт в редакторе скриптов (Инструменты => Редактор скриптов) и сохраните изменения.

Вам нужно создать устанавливаемый триггер onChange для sendEmailRow:

  • Нажмите на: триггеры текущего проекта

  • Создайте новый триггер, а затем выберите именно эти настройки:

  • Ваше приложение готово! Как только вы вставите новую строку в Sheet1, вы отправите электронное письмо выбранному получателю.

Большое спасибо @Marios, но я получаю TypeError: Cannot read property 'source' of undefined (line 2, file "Code")

αԋɱҽԃ αмєяιcαη 09.12.2020 17:31

@αԋɱҽԃαмєяιcαη Прочтите еще раз инструкцию по установке. Я не говорил выполнять его вручную. Я сказал скопировать и сохранить его, а затем создать для него устанавливаемый триггер, как я описываю на картинках. Тогда вам просто нужно вставить новую строку в Sheet1. Пожалуйста, внимательно прочитайте инструкции. Дело об этом. Это триггерная функция. Вы должны получать уведомления, когда что-то меняется в вашем листе (в этом случае строка была вставлена). Не имеет смысла выполнять его вручную.

Marios 09.12.2020 17:33

я извиняюсь за это. Спасибо. сейчас добавлю и попробую. большое спасибо

αԋɱҽԃ αмєяιcαη 09.12.2020 17:34

@αԋɱҽԃαмєяιcαη вам не нужно извиняться :) извините, если это выглядело невежливо :) я не хотел.

Marios 09.12.2020 17:35

спасибо Мариос. это работает, но я не получил строку в виде тела в электронном письме. но все в порядке, ты мне очень помог

αԋɱҽԃ αмєяιcαη 09.12.2020 17:41

@αԋɱҽԃαмєяιcαη Я не работаю в Google :), но работаю с разными продуктами Google :)

Marios 09.12.2020 17:55

Другие вопросы по теме