2017-02-16 13 views
0

Я очень мало знаю о коде и просто ищу помощь, если кто-то знает, как это сделать. У меня есть таблицы Google и для этого примера, скажемGoogle Таблицы - код для отправки электронной почты по адресу в ячейке при выборе выпадающего меню ячейки

Столбец A является адрес электронной почты Колонка B является текст Колонка C представляет собой выпадающий список элементов с использованием инструмента проверки достоверности данных (в ожидании, по расписанию и полная).

мне нужен код, который при выборе «Завершить» в колонке С, по электронной почте посылается получателю в колонке А с телом сообщения электронной почты, содержащего текст из столбца B.

Любая помощь оценена как Я не разработчик, я пастор, пытающийся помочь моей церкви работать более гладко.

и вот ссылка на таблицу ... https://docs.google.com/spreadsheets/d/1bA-gDvZ_jbJMyU6IqExBjHKclrKmqJSMHyuKHsr2CMA/edit?usp=sharing

и вот сценарий ...

var sheetname = "FacilitiesWorkRequests"; 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var range = sheet.getRange(1, 3, sheet.getLastRow(), 1); 
    var list = SpreadsheetApp.newDataValidation().requireValueInList(["pending", "scheduled", "complete"], true).build(); 
    range.setDataValidation(list); 
} 

function onEdit() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var ac = sheet.getActiveCell(); 
    if (ac.getValue() == "complete") { 
    data = sheet.getRange(ac.getRowIndex(), 1, 1, 2).getValues(); 
    Logger.log(data) 
    MailApp.sendEmail({ 
     to: data[0][0], 
     subject: "sample mail", 
     body: data[0][1] 
    }); 
    } 
} 

ответ

0

Как насчет этого образца?

var sheetname = "Here, please input your sheet name."; 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var range = sheet.getRange(1, 3, sheet.getLastRow(), 1); 
    var list = SpreadsheetApp.newDataValidation().requireValueInList(["pending", "scheduled", "complete"], true).build(); 
    range.setDataValidation(list); 
} 

function onEdit() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetname); 
    var ac = sheet.getActiveCell(); 
    if (ac.getValue() == "complete") { 
    data = sheet.getRange(ac.getRowIndex(), 1, 1, 2).getValues(); 
    Logger.log(data) 
    MailApp.sendEmail({ 
     to: data[0][0], 
     subject: "sample mail", 
     body: data[0][1] 
    }); 
    } 
} 

enter image description here

Пожалуйста, скопируйте и вставьте этот скрипт в редакторе скриптов на таблицу и задать имя листа вы используете, а затем установить триггер. Как установить триггер следующим образом. Подробную информацию об этом вы можете узнать по телефону https://developers.google.com/apps-script/guides/triggers/installable#google_apps_triggers.

  1. В редакторе сценариев выберите «Ресурсы» - «Триггеры текущего проекта».

  2. Нажмите «здесь» и добавьте триггер.

  3. В разделе «Выполнить» выберите функцию «onEdit()».

  4. Событие «Из таблицы» - «Изменение стоимости».

Для этого примера сценария, при открытии таблицы с помощью этого сценария, выпадающий список применяется, в то время как существующий выпадающий список не изменяется. Поскольку, если вы добавили новую строку, добавлен новый раскрывающийся список. Когда вы запустите этот скрипт, если появится экран проверки подлинности, выполните аутентификацию.

И когда вы выберете «полный» из выпадающего списка, электронное письмо отправляется с использованием электронной почты той же строки, которую вы выбрали. Тело электронной почты - это столбец B той же строки.

Если это будет полезно, я рад.

+0

Спасибо! Теперь, если я хочу изменить столбцы. В моей реальной электронной таблице адрес электронной почты находится в столбце L, основной текст будет в G, а в раскрывающемся поле будет столбец J. Так как мне это изменить? Я не вижу заголовков столбцов в этом коде. –

+0

Столбец определяется как «getRange()». Документ «getRange()» находится здесь. https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange(Integer,Integer,Integer,Integer) "onOpen()" делает выпадающий список. "onEdit()" отправить электронное письмо. – Tanaike

+0

Спасибо. Теперь я понимаю. однако я продолжаю получать эту ошибку. TypeError: Невозможно вызвать метод «getActiveCell» null.(строка 12, файл «Код») –