请记住 Apps Script(简称 AS)项目 (code.gs) 和 Apps Script API 之间的区别。
总体思路是能够创建 AS 项目,在其中编写函数并执行它们,所有这些都来自“父”AS 项目。
在确认没有特定于 AS 的方法来创建新的 AS 项目(手动除外)后,我最近设法让 AS API 在 AS 项目中工作。
projects.create方法非常适合创建新项目。
projects.updateContent方法非常适合在新创建的项目中编写代码。
但是,我在使用 script.run 方法尝试从 API 执行新项目中包含的函数时遇到了麻烦
这是我尝试让它工作的方法:
function runScript() {
var scriptId = 'target_script_id'
var functionName = 'target_function_name';
var accessToken = ScriptApp.getOAuthToken();
var url = 'https://script.googleapis.com/v1/scripts/' + scriptId + ':run';
var payload = {
'function': functionName,
'devMode': false
};
var options = {
'method': 'post',
'contentType': 'application/json',
'payload': JSON.stringify(payload),
'muteHttpExceptions': true,
'headers': {
'Authorization': 'Bearer ' + accessToken
}
};
var response = UrlFetchApp.fetch(url, options);
var responseData = JSON.parse(response.getContentText());
Logger.log (responseData);
return responseData;
}
这是我收到的错误:
{
"error": {
"code": 500,
"message": "Internal error encountered.",
"status": "INTERNAL"
}
}
在进一步研究 AS-API 文档后,发现目标脚本首先需要部署为 API 可执行文件。 然后我在 script.run 请求中将部署 id 设置为目标,并执行目标函数。
但是,它只是推迟了我的问题,因为现在我无法使用 deployments.create 方法从 API 部署目标脚本,我再次收到 500 错误。