google-apps-script - 云构建 API 部署:在 Google Apps 上运行脚本不起作用
问题描述
我在 GAS 上确认了服务帐户的授权。“列表”是有效的,但“运行”方法永远不会奏效。错误消息是“源不得为空”。我应该附加什么样的json?
这是在使用 GSApp 库的独立 GAS 上。(Apps-Script-GSApp-Library : MJ5317VIFJyKpi9HCkXOfS0MLm9v2IJHf)</p>
function deploy() {
var jsonKey = JSON.parse(PropertiesService.getScriptProperties().getProperty("jsonKey"));
var serverToken = new GSApp.init(jsonKey.private_key, ["https://www.googleapis.com/auth/cloud-platform"], jsonKey.client_email);
var tokens = serverToken.addUser(jsonKey.client_email).requestToken().getTokens();
var url = "https://cloudbuild.googleapis.com/v1/projects/{ProjectId}/triggers/{TriggerId}:run";
var options = {
"muteHttpExceptions": true,
"method": "POST",
"headers": {
"Authorization":"Bearer "+tokens[jsonKey.client_email].token,
},
"source": {
"projectId": "{ProjectId}",
"branchName": "master",
"repoName": "repo"
}
}
Logger.log(UrlFetchApp.fetch(url,options));
}
{
"error": {
"code": 400,
"message": "source must not be empty",
"status": "INVALID_ARGUMENT"
}
}
解决方案
UrlFetchApp.fetch()
不将“来源”识别为有效属性。请改用“有效载荷”。您还需要JSON.stringify()
您的有效负载并按如下方式设置contentType
属性:application/json
var options = {
"muteHttpExceptions": true,
"method": "POST",
"contentType":"application/json",
"headers": {
"Authorization":"Bearer "+tokens[jsonKey.client_email].token,
},
"payload": JSON.stringify({
"projectId": "{ProjectId}",
"branchName": "master",
"repoName": "repo"
})
};
推荐阅读
- css - Bootstrap Form Helper V2.3.0 不工作
- python - Python 2 -> 3 Django 迁移导致字段参数类型更改
- facebook - 基于skip-gram或CBOW的FastText词嵌入模型
- apache-kafka - 从控制台生成具有空值(墓碑)的 Kafka 消息
- angular - 表单值未填充,因为来自服务
- xml - 验证时出现 DTD 错误
- c++ - CreateProcess api 在 Windows 10 上失败,错误代码为 122
- android - VideoView vs SurfaceView - Android
- c# - 将带有数组的 json 结构展平为多个没有数组的平面对象
- javascript - 使用 Nashorn 将 ScriptObjectMirror 转换为其他 Java 类