I am trying to make a POST call work from within Google Apps scripts into the V2 create API.

I have it working, but it doesn’t execute the user_data formatted in either cloud-init or just as shell commands. Nothing shows in the logs either. Any help is appreciated!

function createDroplet(){
  var url = "https://api.digitalocean.com/v2/droplets";
  var payload = {
    "name":"NAMEOFHOST",
    "region":"sfo2",
    "size":"s-1vcpu-1gb",
    "image":"ubuntu-18-04-x64",
    "tags":["TAG1", "TAG2"],
    "user_data": "curl -s https://Script.sh | sh"
  };
  var options = { "method": "post", "headers": { "Authorization": "Bearer " + DOToken, "Content-Type": "application/json"},"payload": JSON.stringify(payload) };

  var response = UrlFetchApp.fetch(url, options); 
}
edited by MattIPv4

These answers are provided by our Community. If you find them useful, show some love by clicking the heart. If you run into issues leave a comment, or add your own answer to help others.

×
1 answer

I discovered that you can use the Unicode encoding to put the LF in the json, and all it well now. For those wondering the code is :

\u000A

so “user_data” needed to look like this

"user_data": "#!/bin/bash \u000A \
    /usr/bin/curl -s https://SCRIPT | sh
edited by bobbyiliev
Submit an Answer