В ваших скриптах я думаю, что ваш php скрипт работает, а Google Apps Script требуется немного изменить. Так как насчет этой модификации?
Когда объект JSON ({"key1": "value1", "key2": "value2"}
) отправляется в Web Apps в виде запроса POST, e
of [ 115] становится следующим.
{
"parameter": {},
"contextPath": "",
"contentLength": 36,
"queryString": "",
"parameters": {},
"postData": {
"type": "application/json",
"length": 36,
"contents": "{\"key1\": \"value1\", \"key2\": \"value2\"}",
"name": "postData"
}
}
Таким образом, когда вы хотите извлечь значения из объекта, объект должен быть проанализирован, как var postData = JSON.parse(e.postData.contents)
. Кажется, что хотя данные отправляются как application/json
, объект не анализируется автоматически.
По поводу строки if (headers[i] == "Timestamp"){
в вашем образце нет изображения Timestamp
. Я думал, что это может быть Date
.
Пожалуйста, измените его следующим образом.
From:
var row = [];
// loop through the header columns
for (i in headers){
if (headers[i] == "Timestamp"){ // special case if you include a 'Timestamp' column
row.push(new Date());
} else { // else use header name to get data
row.push(e.parameter[headers[i]]);
}
}
To:
var postData = JSON.parse(e.postData.contents);
var row = headers.map(function(e) {return e == "Date" ? new Date() : postData[e]});
При запуске вашего php-скрипта значения помещаются в электронную таблицу следующим образом.
Если я неправильно понял ваш вопрос, и это был не тот результат, который вы хотите, я приношу свои извинения.
Я вижу то, что Вы говорите и имели то же разочарование некоторыми нашими веб-приложениями, но для пользы непротиворечивости, я предложил бы, чтобы Вы сохранили вещи как они. При копировании библиотек в каталог кота/lib можно столкнуться с проблемами с системным путем к классу по сравнению с путем к классу веб-приложения.
Путем хранения вещей, поскольку они - Вы, уверены, что Вы развертываете тот же материал в разработке/демонстрации, как Вы работаете. Жизнь сосет, когда Вы вручную настраиваете материал в производстве, или у Вас есть некоторая сумасшедшая ошибка, потому что Вы забыли обновлять XYZ.jar от версии 1.6 до 1.6.1_b33 в производстве, и теперь это ведет себя по-другому, чем, чему Вы верите, тот же самый код демонстрации.
При работе с чем-то достаточно жизненным, чтобы иметь dev/demo/production системы, я думаю, что непротиворечивость является намного больше проблемы, чем .war размер файла.
Tomcat имеет, совместно использовал/освободил каталог, который является надлежащим местом для глобальных зависимостей приложений. Однако они будут видимы ко всем приложениям, которые будут влиять на управление зависимостью и могут иметь последствия для вещей как статические переменные. Я не уверен, можно ли настроить что-нибудь лучше в Tomcat.
Альтернатива должна переключиться на более сложный веб-контейнер. Например, Выпуск Сообщества Сервера приложений WebSphere (синим промытая версия Geronimo) поддерживает библиотеки на актив. Другие свободные и коммерческие серверы поддерживают это, также. Я знаю, что Сервер приложений WebSphere делает и я вполне уверен, можно сделать это в Glassfish.
Вы могли включать внешние библиотеки Java в каталог Tomcat/lib. Тем путем они остаются на сервере.
Вы могли просто развернуться как файл JAR, копировать свою среду развертывания локально и просто скопировать по файлам, которые изменились и сама банка. Соединение каналом является единственной реальной проблемой.
Или Вы могли изучить установку EAR.
Можно ли добавить неизменяющиеся Банки к Пути к библиотеке Java на стороне сервера и только включать ли регулярно изменяющиеся Банки в ВОЙНУ?
@McDowell, при упоминании этих серверов J2EE, вы должны уточнить, что они являются серверами J2EE (контейнер сервлетов + все остальное).
Как и @digitaljoel, я предлагаю оставить все как есть . Похоже, вы еще не развернули много веб-приложений. Проблемы, которые у вас возникнут, не стоят затрат (конфликты версий, ошибки развертывания и т. Д.).
Я работаю с 'разнесенным веб-приложение »на серверах разработки, а иногда и в производственной среде. Процесс развертывания (на основе ANT) обновляет JAR-файлы в WEB-INF / lib с нашими пакетами. Только на сервере разработки мы активируем перезагрузку Tomcat, которая заботится о перезапуске приложения при изменении чего-либо. Вы должны назначить этим Tomcat некоторую дополнительную постоянную память и иметь возможность перезапустить сервер, так как перезагрузка может время от времени приводить к сбою Tomcat.
Я знаю это » - странная конфигурация, но я не могу понять, как постоянная переупаковка 30 МБ (и рост) нашего типичного приложения может сделать что-то лучше. Возможно, однажды дескриптор разработки разрешит внешние ссылки на библиотеки, которые контейнер может загружать и кэшировать. ??
Простите за плохой английский.
Мы используем для этого инструмент rsync (в нашем случае, используя cygwin под окнами ), чтобы скопировать развертывания на серверы (на которых работает Linux). Мы используем разложенные файлы WAR / EAR (т.е. структуру каталогов MyApp.war, а не zip-файл MyApp.war), rsync будет передавать только те файлы, которые были изменены.
Обычно rsync передает наши 30- 40 мегабайт расширяют EAR примерно за 5 секунд.
Что вам нужно, так это инструмент контроля версий и процесс сборки.
Используйте CSV, SVN, GIT или что угодно, что вам подходит, чтобы держать ваш исходный код под контролем. используйте инструмент сборки для сборки своего приложения: Maven, ant, ...
Теперь, когда вы хотите развернуть приложение на своем сервере, вам просто нужно зафиксировать обновления на своем компьютере, обновить исходный код на сервере, создайте свое приложение и разверните его с сервера.
Таким образом, серверу просто нужно будет загрузить ваши модификации, и это должно быть намного быстрее.