gpt4 book ai didi

java - "Requested entity was not found."- Apps 脚本执行 API 错误

转载 作者:行者123 更新时间:2023-11-30 02:13:57 25 4
gpt4 key购买 nike

我们有一个 Apps 脚本,安装在五个 G Suite 帐户中。我正在从 Google App Engine 中部署的 Java 代码调用应用程序脚本。我已将五个刷新 token 存储在属性文件中,并在调用 Apps 脚本之前以循环方式将它们设置在 GoogleCredential 中。当我尝试调用 Apps 脚本未找到请求的实体。时,返回错误。但是,当我创建一个简单的 java 程序来调用 Apps 脚本时,相同的刷新 token 和客户端 key 可以正常工作。

@Service
public class GoogleAppsScriptServiceImpl {
private String[] scriptIds;

private String[] refreshTokens;

private GoogleCerdential credential;

public void executeAppsScript() {
List<Object> params = new ArrayList<>();
params.add(googleDocFileId);

ExecutionRequest request = new ExecutionRequest()
.setFunction(APPS_SCRIPT_FUNCTION_NAME)
.setParameters(params);

int index = new Random().nextInt(numOfUsers);

Script scriptService = getScriptService(refreshTokens[index]);
String scriptId = scriptIds[index];

Operation operation = scriptService.scripts()
.run(scriptId, request)
.setQuotaUser(UUID.randomUUID().toString())
.execute();
}

private Script getScriptService(String refreshToken) {
credential.setRefreshToken(refreshToken);
return new Script.Builder(httpTransport, jsonFactory, credential)
.setApplicationName(APPLICATION_NAME)
.build();
}

@PostConstruct
private void createGoogleCredential() throws Exception {
jsonFactory = JacksonFactory.getDefaultInstance();
httpTransport = GoogleNetHttpTransport.newTrustedTransport();

credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(jsonFactory)
.setClientSecrets(clientId, clientSecret)
.build();

refreshTokens = commaDelimitedListToStringArray(refreshTokensProp);
numOfUsers = refreshTokens.length;

scriptIds = commaDelimitedListToStringArray(scriptsIdsProp);
}

}

最佳答案

您正在将执行 API 部署到独立脚本类型或容器绑定(bind)脚本类型的项目。然后您可以使用 API 调用项目中的函数。在这种情况下,会出现Requested实体未找到。的错误。如果我的理解是正确的,我也经历过同样的情况。那么确认以下几点怎么样?

  1. 使用保存按钮,再次保存正在部署 API 可执行文件的项目。
    • 这对我来说非常重要。
  2. 将项目另存为新版本,然后重新部署 API。
  3. 是否从使用 Apps Script API 的项目中检索客户端 ID 和客户端 key 。
    • 是否从这些客户端 ID 和客户端 key 中检索访问 token 。
  4. 范围是否包括 https://www.googleapis.com/auth/drivehttps://www.googleapis.com/auth/drive.scriptshttps://www.googleapis.com/auth/script.external_request
  5. 是否启用执行 API。

如果你想简单地使用curl命令进行测试,也可以使用以下命令。

curl -X POST -L \
-H "Authorization: Bearer ### access token ###" \
-H "Content-Type: application/json" \
-d "{function: '### function name ###',devMode: true}" \
"https://script.googleapis.com/v1/scripts/### script ID ###:run"

确认以上几点后,请重试。如果这些对您没有用,我很抱歉。或者如果我误解了你的问题,我真的很抱歉。

关于java - "Requested entity was not found."- Apps 脚本执行 API 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49206863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com