Web App发布问题:这是如何工作的?

时间:2018-08-22 12:12:49

标签: google-apps-script

当我发布更新时,我不知道为什么doGet()会发生变化,而doPost()却没有发生。

doGet()

代码

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.1的输出: Version 0.4.1

现在,我增加并保存一个新版本(本例中为0.4.3): Version 0.4.3 请注意,它立即可用于网络。 Stackdriver日志支持此功能。

doPost()

代码

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日志: Logger.log v0.4.3 ..,但Stackdriver日志仍显示版本0.4.0(其枚举有误(MimeType.JSONContentService.MimeType.JSON)。 Stackdriver log 无论是保存脚本还是重新发布,都是一样的。

发布新

现在,当我发布版本(0.5.0)与更新Web应用程序时,我可以立即看到对doPost()的更改: Stackdriver log v0.5.0

为什么doGet()doPost()的更新和发布新行为的差异?!?

这导致我大约需要2天的头痛时间才能到达这一点(我以为我会在4个小时内完成!)!

0 个答案:

没有答案