Есть четыре вещи для вас, чтобы понять и исследовать.
1 - Создайте сценарий, который можно создать как устанавливаемый триггер «OnFormSubmit». Документация здесь. . Это будет выполняться каждый раз при отправке формы. Это легко сделать, и я добавил скриншот экрана триггера добавления в конце этого ответа.
2 - Узнайте об информации, полученной с помощью сценария «OnFormSubmit». В частности, он вернет диапазон отправки формы, из которого вы хотите получить значение столбца 7 (Владелец).
3 - лист электронной почты содержит отдельный набор данных. Вы можете получить его, сославшись на документацию getSheetByName
- . Ссылка
. 4 - Необходимо найти соответствие между значением «Владелец» и «Имя» на листе «Электронные письма». Существует множество способов найти совпадение с владельцем, но циклически проходить через данные «электронные письма», вероятно, проще всего. На каждой новой строке вы проверяете, совпадает ли имя электронной почты с именем «Владелец». Когда вы находите сопоставьте, затем вы получите сопроводительный адрес электронной почты (в ячейке рядом с именем электронной почты). Затем вы можете отправить электронное письмо, как вы проверяли.
Этот код адаптирует ваш существующий код для выполнения указанных шагов
function so5524531901(e) {
// this script as an Installable "OnFormSubmit" Trigger
//setup the spreadsheet
var ss = SpreadsheetApp.getActiveSpreadsheet();
//get the range from OnFormSubmit
var range = e.range;
//Logger.log("DEBUG: the range is "+range.getA1Notation());//DEBUG
// get the data for the range
var response = range.getValues();
// get the owner name from the form submission
var owner = response[0][7];
Logger.log("DEBUG: Owner = "+owner);// DEBUG
// get the emails list
var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails");
// get ALL the data from this sheet
var emaildata = emailSheet.getDataRange().getValues();
// check how many rows of data
var emailLastRow = emailSheet.getLastRow();
// start the loop through the emails data
for (var i=1; i
Хорошо, я нашел то, что я пропускал. Я должен был включать jpa-annotations-source.jar в свой путь GWT-компилятора в myapp-compile.cmd сценарии (или в файле типа "build" муравья). Между прочим может кто-либо говорить мне источник этого jpa-annotations-source.jar файла?
Можно пользоваться библиотекой Gilead (http://sourceforge.net/projects/gilead/) для бесшовного управления объектами JPA с GWT.
С уважением
Необходимо включать исходный код для аннотаций JPA в пути сборки для проекта GWT. Посмотрите здесь для получения дополнительной информации:
http://code.google.com/p/google-web-toolkit/issues/detail?id=1830&can=1&q=jpa
Конкретно этот файл банки, который решит Вашу проблему:
Я также работаю с JPA <--> преобразованием данных GWT и т. Д.
В попытке устранить уровень DTO я также использовал Gilead.
Мое возражение здесь касается перевода javax.persistence. Чтобы избежать этого, я использовал объявления отображения XML JPA (orm.xml)
Общая проблема JPA и GWT заключается в том, что сам GWT не поддерживает причудливые классы JPA, поэтому вы просто создаете простые постоянные объекты POJO DTO, которые реализуют java.io.Serializable и имеют простые Аннотации ресурсов JPA. Вам необходимо создать классы сущностей в области действия клиента GWT, либо поместить их в пакет yourproject.client, либо добавить их с помощью
source path = "client"
source path = "folderOfYourEntities"
в Файл YouProject.gwt.xml проекта GWT. Это будет включать объекты сущностей в клиенте GWT, чтобы они также могли использовать их на стороне клиента RPC. DAO должен находиться на стороне сервера и может содержать все, что поддерживает ваш контейнер.
Проблема, с которой вы столкнулись, заключается в том, что при компиляции компилятор GWT сообщает, что он desn ' Я не знаю, что это за импорт для аннотаций JPA в классах сущности DTO. Вот почему вам нужен класс javax.persistence и исходные коды. Ссылка на jpa-annotation-source.jar от Rustmyself работает. Это просто скомпилированные файлы классов и файлы исходного кода javax.persistence плюс Persistence.gwt.xml. Это простой модуль GWT для пакета javax.persistence. Если вы знаете, как создать свой собственный модуль GWT, у вас должны возникнуть проблемы с выполнением всей этой работы. Кстати, официальный источник Java EE можно найти в разделе сборки сайта glassfish dev wiki.glassfish.java.net
. Есть много других решений, которые автоматически превращают ваши причудливые объекты PU в простые объекты с помощью прокси или ленивая загрузка их во время выполнения. Они работают, но не оптимальные решения. Лучшая практика - сделать вещи простыми и надежными с самого начала, имея объекты POJO JPA DTO в контексте клиента GWT и полномасштабный DAO на сервере.
Пример GWTPersistence
Я добавил реальный рабочий пример того, как сделать так, чтобы GWT и JPA работали без проблем. Это проект NetBean с исходными кодами и файлом развертывания. См. GWTPersistence на NingZhang.info