是否有用于与Heroku API交互的示例GAS代码?

时间:2019-09-07 23:30:52

标签: heroku google-apps-script

我需要从应用脚本中以编程方式更改Heroku配置变量。

我有《 Heroku Platform API参考》,包括有关OAuth的信息,但是我没有足够的经验来使用这些知识从头开始编写Google Apps脚本代码,并且示例实现将非常有帮助。

谢谢。

1 个答案:

答案 0 :(得分:0)

幸运的是,它并没有最初显示的那么复杂-在很大程度上,因为不需要OAuth,只需在其Manage Account页面上使用Heroku的API KEY。

HEROKU_ADDRESS = 'https://api.heroku.com/apps';

function getApps() {
  // Get all apps of Bearer, including their IDs and names. Either ID or name can be used later on as APP_ID.
  var options = {
    'method' : 'get',
    'headers' : {
      'Accept': 'application/vnd.heroku+json; version=3',
      'Authorization': 'Bearer '+ HEROKU_API_KEY
    },
  };
  var response = UrlFetchApp.fetch(HEROKU_ADDRESS, options);  
  Logger.log(response.getContentText());
}

function getConfigVars() {
  // Get all config-vars of App
  var options = {
    'method' : 'get',
    'headers' : {
      'Accept': 'application/vnd.heroku+json; version=3',
      'Authorization': 'Bearer '+ HEROKU_API_KEY
    },
  };
  var response = UrlFetchApp.fetch(HEROKU_ADDRESS+'/' + APP_ID +'/config-vars', options);  
  Logger.log(response.getContentText());
}

function updateConfigVars(newConfigVars) {
  // Set/Update some config-vars of App
  // returns all config-vars
  var options = {
    'method' : 'patch',
    'headers' : {
      'Accept': 'application/vnd.heroku+json; version=3',
      'Authorization': 'Bearer '+ HEROKU_API_KEY,
      'Content-Type': 'application/json'
    },
    'payload': JSON.stringify(newConfigVars)
  };
  var response = UrlFetchApp.fetch(HEROKU_ADDRESS+'/' + APP_ID +'/config-vars', options);  
  Logger.log(response.getContentText());
}

function delConfigVar(ConfigVarName) {
  // Delete a config-var of App (set to null)
  // returns all remaining config-vars
  var ConfigVar2del = {};
  ConfigVar2del[ConfigVarName] = null;
  var options = {
    'method' : 'patch',
    'headers' : {
      'Accept': 'application/vnd.heroku+json; version=3',
      'Authorization': 'Bearer '+ HEROKU_API_KEY,
      'Content-Type': 'application/json'
    },
    'payload': JSON.stringify(ConfigVar2del)
  };
  var response = UrlFetchApp.fetch(HEROKU_ADDRESS+'/' + APP_ID +'/config-vars', options);  
  Logger.log(response.getContentText());
}

function del() {
  delConfigVar('name');
}

function update() {
  var newConfigVars = {
    'name': 'some value',
    'test': 770
  };
  updateConfigVars(newConfigVars);
}

使用这些功能,可以获取Bearer所有Heroku应用程序的信息,包括其名称和ID,这些名称和ID可随后用于获取该应用程序的所有配置变量,或修改/删除其中一些配置变量。