Google apps script 如何执行数据传输API?
我有几个账户需要将所有权转移到另一个账户。我在谷歌表单上列出了所有的电子邮件地址。我希望使用下面的代码来执行它,但我不确定使用什么来执行代码 我感谢你的时间和帮助!蒂亚Google apps script 如何执行数据传输API?,google-apps-script,google-admin-sdk,google-data-api,Google Apps Script,Google Admin Sdk,Google Data Api,我有几个账户需要将所有权转移到另一个账户。我在谷歌表单上列出了所有的电子邮件地址。我希望使用下面的代码来执行它,但我不确定使用什么来执行代码 我感谢你的时间和帮助!蒂亚 function dataTransfer() { var ss = SpreadsheetApp.openById("SHEETID") var sheet = ss.getSheetByName("SHEETNAME"); var start = 2
function dataTransfer() {
var ss = SpreadsheetApp.openById("SHEETID")
var sheet = ss.getSheetByName("SHEETNAME");
var start = 2;
var end = sheet.getLastRow();
var range = sheet.getRange(start,1,end,sheet.getLastColumn());
var values = range.getValues();
for (var i = 0; i < values.length-1; i++) {
/* transfer the data ownership to */
var A = "aUser@company1.com";
var B = "bUser@company1.com";
var C = "cUser@company1.com";
var email = values[i][0];
var company = values[i][1];
var status = values[i][3];
if (status === "Complete") {continue;}
if (company == "A") {
/* transfer of the ownership of user data between users. */
var transferObject = {
"kind": "admin#datatransfer#DataTransfer",
"oldOwnerUserId": email,
"newOwnerUserId": A,
"applicationDataTransfers": [
{
"applicationId": XXXXXX,
"applicationTransferParams": [{
"key": "PRIVACY_LEVEL",
"value": [
"PRIVATE",
"SHARED"
]
}],
"applicationId": XXXXX,
"applicationTransferParams": [{
"key": "RELEASE_RESOURCES",
"value": true
}],
}],
}
**admin.datatransfer....** /* what do I use here to execute the above code */
sheet.getRange(start+i,4,1,1).setValue("Complete");
}
}
}
}
函数数据传输(){
var ss=电子表格应用程序openById(“SHEETID”)
var sheet=ss.getSheetByName(“SHEETNAME”);
var启动=2;
var end=sheet.getLastRow();
var range=sheet.getRange(开始、1、结束、sheet.getLastColumn());
var values=range.getValues();
对于(变量i=0;i
回答:
使用UrlFetchApp
您需要向https://admin.googleapis.com/admin/datatransfer/v1/transfers
。您必须设置一个GCP项目,并启用数据传输API来实现这一点
更多信息:
使用数据传输API的先决条件,根据州(我自己的重点):
在使用数据传输API之前,您需要以下基本配置:
- 拥有Google帐户并创建管理员。该API适用于Google Workspace、教育、政府、分销商和ISP帐户
- 熟悉Admin.Google.com上的Google Workspace管理控制台。有关管理控制台的更多信息,请参阅使用管理控制台
- 从Google Workspace管理控制台启用API访问,以便向数据传输API发出请求。
googlecloudplatform
旁边的下拉菜单并从中创建一个新项目来完成此操作
然后,使用汉堡包菜单遵循≡ > API和服务>库
并搜索管理SDK API
。单击匹配结果,然后在新页面上单击启用按钮
接下来,您需要将此GCP项目链接到您的应用程序脚本项目
返回汉堡包菜单,按照≡ > 主页>仪表板
并复制项目信息区域下显示的12位项目编号
回到您的脚本,按照资源>云平台项目…
菜单项,粘贴12位数字,然后单击设置项目。这将通过启用的API将应用程序脚本项目链接到新创建的GCP项目
您现在可以安全地关闭此模式
根据以下文件:
插入数据传输请求
HTTP请求
POSThttps://admin.googleapis.com/admin/datatransfer/v1/transfers
请求主体
请求主体包含的实例
代码:
首先,作为一个快速代码修复程序,applicationDataTransfers/applicationTransferParams/value
需要是,因此应该是:
"applicationId": XXXXX,
"applicationTransferParams": [
{
"key": "RELEASE_RESOURCES",
"value": [
"TRUE"
]
}
],
// ...
除此之外,oldOwnerUserId
和newOwnerUserId
值必须是从端点获得的用户ID值。谷歌电子邮件地址无法替代此地址。完整的请求示例如下:
var payload = {
"kind": "admin#datatransfer#DataTransfer",
"oldOwnerUserId": "113412843513541354193",
"newOwnerUserId": "118387348413214353832",
"applicationDataTransfers": [
{
"applicationId": "14186345432",
"applicationTransferParams": [
{
"key": "PRIVACY_LEVEL",
"value": [
"PRIVATE",
"SHARED"
]
}
]
},
{
"applicationId": "546343454353",
"applicationTransferParams": [
{
"key": "RELEASE_RESOURCES",
"value": [
"TRUE"
]
}
]
}
]
}
关于发出HTTP
请求:
consturl=”https://admin.googleapis.com/admin/datatransfer/v1/transfers";
变量头={
“授权”:“承载者”+ScriptApp.getOAuthToken(),
};
变量选项={
“方法”:“发布”,
“标题”:标题,
“contentType”:“application/json”,
“有效载荷”:JSON.stringify(有效载荷)
};
重要注意事项:当您将脚本的令牌作为OAuth令牌直接使用API时,您需要使用所需的作用域更新应用程序脚本清单
按照View>Show manifest file
菜单项,将您的作用域添加到项目中。完整清单文件应如下所示:
{
"timeZone": "Europe/Paris",
"dependencies": {
},
"exceptionLogging": "STACKDRIVER",
"runtimeVersion": "V8",
"oauthScopes": [
"https://www.googleapis.com/auth/script.external_request",
"https://www.googleapis.com/auth/admin.datatransfer"
]
}
脚本.external_请求
是必需的,因此您可以调用UrlFetchApp
,而admin.datatransfer
是调用目录插入端点所需的作用域
我希望这对你有帮助
参考资料:
谢谢你,拉法。我感谢您的回复,并将按照概述的说明进行操作。我希望我能够毫无问题地执行它。