google-apps-script - 在 1 个 URLFetchApp 调用中向 Google 群组添加一些成员?
问题描述
是否可以使用 1 个 URLFetchApp.fetch 调用将少数成员添加到 Google 组?试图减少我的应用程序中的 fetch 调用量。
我可以为每个成员打 1 个电话,将他们添加到 Google 群组中。
var obj = JSON.parse(jsonStr);
for(var h=1; h< mailingData.length;h++) {
obj["members"].push({"email":mailingData[h][column],"role":"MEMBER"});
}
jsonStr = JSON.stringify(obj);
Logger.log(jsonStr);
fetchArgs.method = "POST";
fetchArgs.contentType = "application/json";
fetchArgs.headers = {Authorization: 'Bearer ' + myService.getAccessToken()};
fetchArgs.muteHttpExceptions=true;
fetchArgs.payload = jsonStr;
var url = 'https://www.googleapis.com/admin/directory/v1/groups/'+group+'/members';
var res = UrlFetchApp.fetch(url, fetchArgs);
这是 jsonStr 的打印输出:
{"members":[
{"email":"devon@myorg.com","role":"MEMBER"},
{"email":"jake_smith@myorg.com","role":"MEMBER"},
{"email":"robert_keys@myorg.com","role":"MEMBER"}
]}
The error I get when I print the response is the following:
[19-07-31 16:21:18:451 EDT] {
"error": {
"errors": [
{
"domain": "global",
"reason": "required",
"message": "Missing required field: member"
}
],
"code": 400,
"message": "Missing required field: member"
}
}
解决方案
在 App Script 中,您可以使用 fetchAll() 函数发出批处理请求 [1]。我在您的代码中实现了 fetchAll,创建了一个空请求数组,并用每个用户的每个请求填充它。假设您收到来自 mailingData 数组的电子邮件、正确的授权令牌和 url 中现有的组电子邮件(我使用这些更改对其进行了测试),则以下代码将起作用:
var requests = []
for(var h=1; h< mailingData.length; h++) {
var data = {"email":mailingData[h][column], "role":"MEMBER"};
var jsonStr = JSON.stringify(data);
var request = {};
request.url = 'https://www.googleapis.com/admin/directory/v1/groups/'+group+'/members';
request.method = "POST";
request.contentType = "application/json";
request.headers = {Authorization: 'Bearer ' + myService.getAccessToken()};
request.muteHttpExceptions=true;
request.payload = jsonStr;
requests.push(request);
}
var response = UrlFetchApp.fetchAll(requests);
[1] https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app#fetchAll(Object)
推荐阅读
- javascript - 如何获得垫选择的价值
- javascript - jQuery ajax 工作但 axios 给出 CORS 错误
- graphql - 查询头部分支仍然存在的合并拉取请求
- c - C语言中的Swtich案例问题
- mysql - 当 wordpress 中有数百个子类别时,类别页面主查询加载过多
- facebook-graph-api - Facebook Business Ads Python:访问令牌不同类型的权限
- scala - 如何使用akka测试套件在scala测试中以异步方式获取未来的价值
- php - 从 Wordpress 数据库中检索和显示数据
- javascript - Google Chrome DevTools 无法解析 SourceMap:chrome-extension
- android - 将 executePendingBindings() 与 gridView 一起使用