gpt4 book ai didi

google-apps-script - 在 Google Apps 脚本中使用 Admin SDK Directory API 创建群组不起作用 "On form submit"

转载 作者:行者123 更新时间:2023-12-04 02:23:58 24 4
gpt4 key购买 nike

我已经阅读了管理中的所有相关页面 ADK Directory API documentation和关于stackoverflow的几个问题,我仍然被卡住了。
我是我的 Google Apps 域的 super 管理员,我希望我域中的用户能够创建他们自己的 Google 网上论坛。我制作了一个 Google 表单,其中用户指定了群组的名称和电子邮件。然后 Google Form Responses 表有一个“On form submit”触发器,它调用我的代码来创建组。
当我运行 createGroupTest() 时,此代码有效从脚本编辑器。它会立即在我的 Google 应用程序域中创建组。
当“表单提交”触发器运行 onFormSubmit(e) 时,此代码不起作用。功能。我收到来自 catch(e) 的电子邮件说 Exception: Failed to authenticate for service: Groups .
有谁知道是什么导致 oauth 身份验证在脚本编辑器中起作用,但在 onFormSubmit 函数调用时不起作用?

function onFormSubmitTest() {

var t = new Date();
t = t.getTime();

onFormSubmit([t, "AAA Test Group " + t], ["aaa.testgroup." + t + "@mydomain.com"], ["me@mydomain.com"]);

}

var consumerKey = "mydomain.com";
var consumerSecret = "xxxxxxxxxxxxxxxxxxxxxxxx";
var domainName = "mydomain.com";

function onFormSubmit(e) {

var timestamp = e.values[0];
var groupName = e.values[1];
var groupEmail = e.values[2];
var owner = e.values[3];

owner = owner.split("@")[0];

var description = 'test';

var requestBody = {email: groupEmail, name: groupName, description: description};

var scope = "https://www.googleapis.com/auth/admin.directory.group";

var fetchArgs = googleOAuth_("Groups", scope);
fetchArgs.method = "POST";
fetchArgs.contentType = "application/json";
fetchArgs.payload = JSON.stringify(requestBody);
fetchArgs.muteHttpExceptions = true;

var url = 'https://www.googleapis.com/admin/directory/v1/groups?key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';

UrlFetchApp.fetch(url, fetchArgs);

}


function googleOAuth_(name,scope) {
var oAuthConfig = UrlFetchApp.addOAuthService(name)
oAuthConfig.setRequestTokenUrl("https://www.google.com/accounts/OAuthGetRequestToken?scope="+scope);
oAuthConfig.setAuthorizationUrl("https://www.google.com/accounts/OAuthAuthorizeToken");
oAuthConfig.setAccessTokenUrl("https://www.google.com/accounts/OAuthGetAccessToken");
oAuthConfig.setConsumerKey(consumerKey);
oAuthConfig.setConsumerSecret(consumerSecret);
return {oAuthServiceName:name, oAuthUseToken:'always'};
}

最佳答案

我想通了:我在我的代码中犯了一个错误,我没有在 groupEmail 字符串之后包含域扩展名(因为 Google 表单只要求用户填写没有域扩展名的组电子邮件名称)。

我想我应该从 stackoverflow 中删除这个问题,但我会把它留在这里以记录我的工作 oauth 身份验证代码,因为:

  • 当我弄清楚时,这样的事情可能对我有所帮助。
  • 此处与 Google Apps Admin SDK Directory API 相关的帖子并不多。
  • Google 不支持此类与开发相关的问题,他们只是将用户引导至此处。
  • 关于google-apps-script - 在 Google Apps 脚本中使用 Admin SDK Directory API 创建群组不起作用 "On form submit",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490001/

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