当我发布更新时,我不知道为什么doGet()会发生变化,而doPost()却没有发生。
var version="0.4.3" // fixed MimeType.
function doGet(req) {
var respData = {
'function': 'doGet',
version: version,
request: req,
message: 'Getting...',
timestamp: (new Date()).toISOString(),
}
debug && console.log(respData)
return HtmlService.createHtmlOutput('<pre>'+JSON.stringify(respData)+'</pre>')
}
现在,我增加并保存一个新版本(本例中为0.4.3): 请注意,它立即可用于网络。 Stackdriver日志支持此功能。
function doPost(post) {
var log = {
'function': 'doPost',
success: true,
timestamp: (new Date()).toISOString(),
version: version,
message: 'Posting...',
request: post,
}
debug && console.log(log)
// create response item
const response = ContentService.createTextOutput()
response.setMimeType(ContentService.MimeType.JSON)
// check post parameters
// echo postParams
response.append(JSON.stringify(log))
return response
}
function testDoPost(){
const dev = '<dev-url>' // URL hidden
const prod = '<prod-url>' // URL hidden
const params = {
method: 'post',
contentType: 'application/json',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
payload: JSON.stringify(logEntryTemplate),
//muteHttpExceptions: true,
}
Logger.log('testDoPost('+version+'): \nparams: '+ JSON.stringify(params))
const resp = UrlFetchApp.fetch(prod, params)
Logger.log('HTTP Status: '+resp.getResponseCode())
Logger.log(resp.getContentText())
}
运行testDoPost()
时,我会得到正确的Logger日志:
..,但Stackdriver日志仍显示版本0.4.0(其枚举有误(MimeType.JSON
和ContentService.MimeType.JSON
)。
无论是保存脚本还是重新发布,都是一样的。
现在,当我发布新版本(0.5.0)与更新Web应用程序时,我可以立即看到对doPost()
的更改:
为什么doGet()
与doPost()
的更新和发布新行为的差异?!?
这导致我大约需要2天的头痛时间才能到达这一点(我以为我会在4个小时内完成!)!