Search code examples
javascriptgoogle-apps-scripthttp-status-codes

How to send an error status code like Bad Request (400) from a google script?


This is a doPost function inside a Google App that returns a Hello World message.

function doPost(e){

  return ContentService.createTextOutput('Hello World');
} 

Now suppose I want to only accept valid JSON to be posted to this Google App endpoint and I want to send a respones with Bad Request status. How can I do that. Here's the pseudo code:

function doPost(e){
  try{
     const data = JSON.parse(e.postData.contents);
     return ContentService.createTextOutput('Hello World');
  }catch(err){
      // Send Bad Request
  }      

} 

Solution

  • Issue and workaround:

    Unfortunately, in the current stage, ContentService cannot modify the status code. When I saw the official document of Class ContentService, such method cannot be found. Ref It seems that this is the current specification.

    So in your situation, as the current workaround, how about returning the value as JSON data? By this, you can check the value using the key of JSON data. For example, how about the following sample script?

    • When the correct value without the error is returned,

        return ContentService.createTextOutput(JSON.stringify({value: 'value'}));
      
    • When the value with the error is returned,

        return ContentService.createTextOutput(JSON.stringify({error: 'Error message'}));
      
    • When you need .setMimeType(ContentService.MimeType.JSON), please add this.

    Note:

    • When I searched about this at the Google issue tracker, I couldn't find it. So how about reporting this as the future request? Ref

    Reference: