0

Im начинающий для Google Scripts и im ищет возможность считывать значения из моей электронной таблицы и писать автоматическое электронное письмо с этими значениями в нем. Я попытался найти некоторую информацию о Google и форумах, но я не очень хорошо ее понимаю.Чтение электронной таблицы, отправка значения по электронной почте

Например: в моей таблице C2 находится ячейка, заполняемая пользователем (это калькулятор цены за квадратный метр). Когда C2 заполняется, например, 6m2, D2 будет вычислять цену. Например, 240 евро.

Теперь я хочу добавить скрипт для этого листа, который автоматически создает и отправляет мне электронное письмо с текстом: «Вы хотите ковровое покрытие для места« C2 ». Это будет стоить «D2».

Я знаю, что это возможно, но я не знаю, как ... Может кто-нибудь, пожалуйста, помогите мне?

ответ

0

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

function onEdit(e){ 
    var range = e.range; //Get edited range 
    if (range.getA1Notation() == 'C2'){ 
    var calculatedValue = range.offset(0,1); //Assumes that the calculated value is in the cell to the right of the cell where the area is entered 
    var body = 'You want carpeting for a '+ range.getValue() + ' location. This will cost ' + calculatedValue.getValue(); 
    try{ 
     GmailApp.sendEmail('[email protected]', 'new carpet request', body); 
    } 
    catch(e) 
    { 
     Logger.log(e) 
    } 
    } 
} 

К сожалению для вас, onEdit() триггер срабатывает, когда таблица отредактированные не позволяет сценарий отправить электронную почту. См https://developers.google.com/apps-script/guides/sheets/functions#advanced

Ваш следующий лучший вариант был бы пару его с пункта меню, добавив OnOpen функцию, как следующее:

function onOpen() { 
    SpreadsheetApp.getUi() 
     .createMenu('Scripts') 
     .addItem('Send Email', 'sendEmail') 
     .addToUi(); 
} 

, который вызывает функцию SendEmail так:

function sendEmail(){ 
    var range = SpreadsheetApp.getActiveSpreadsheet().getRange('C2'); 
    var calculatedValue = range.offset(0,1); 
    var body = 'You want carpeting for a '+ range.getValue() + ' location. This will cost ' + calculatedValue.getValue(); 
    try{ 
    GmailApp.sendEmail('[email protected]', 'new carpet request', body); 
    } 
    catch(e) 
    { 
    Logger.log(e) 
    } 
} 

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

+0

Ничего себе большое спасибо! Работает. Я расширил скрипт, чтобы получить больше значений в нем и его работе. Спасибо за ясный ответ. –

Смежные вопросы