为什么从 Apps Script API 运行 Apps Script 函数会返回 500?

问题描述 投票:0回答:1

请记住 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"
  }
}
google-apps-script http-status-code-500 google-apps-script-api
1个回答
0
投票

在进一步研究 AS-API 文档后,发现目标脚本首先需要部署为 API 可执行文件。 然后我在 script.run 请求中将部署 id 设置为目标,并执行目标函数。

但是,它只是推迟了我的问题,因为现在我无法使用 deployments.create 方法从 API 部署目标脚本,我再次收到 500 错误。

© www.soinside.com 2019 - 2024. All rights reserved.