如何解决通过谷歌脚本通过谷歌报告 API 检索移动设备报告 修改点:修改后的脚本:注意:参考:
我正在尝试检索移动设备报告,但我不断收到此错误:“对 directory.mobiledevices.list 的 API 调用失败,错误:错误请求”。
我认为问题在于 customerId。我应该使用什么来检索所有移动设备信息?我试过使用“all”并定义域名,但没有成功。
必须感谢您的时间和投入! TIA!
function mobileReport() {
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getSheetByName('SHEETNAME');
sheet.clear();
// Append the headers.
var headers = ['Full Name','Email','Device Id','Model','Type','Status','Last Sync'];
sheet.appendRow(headers).setFrozenRows(1);
var rows = [];
var pagetoken;
var count = 0;
do {
var page = AdminDirectory.Mobiledevices.list({
orderBy: 'email',maxResults: 500,pagetoken: pagetoken
});
var users = page.mobiledevices;
if (users) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
rows.push([user.name,user.email,user.deviceid,user.model,user.type,user.status,user.lastSync]);
}
// Append the results.
sheet.getRange(2,1,rows.length,headers.length).setValues(rows);
}
else {
Logger.log('No users found.');
}
pagetoken = page.nextPagetoken;
} while (pagetoken);
}
解决方法
修改点:
-
当我看到the official document时,好像在Directory API中的“Method: mobiledevices.list”方法中,
customerId
需要如下使用。customerId
:客户的 Google Workspace 帐户的唯一 ID。作为帐户管理员,您还可以使用 my_customer 别名来表示您帐户的 customerId。 customerId 也作为 Users resource 的一部分返回。- 但是在您的脚本中,没有使用它。因此,
AdminDirectory.Mobiledevices.list
的参数是不正确的。我认为这就是您的“错误请求”问题的原因。
- 但是在您的脚本中,没有使用它。因此,
-
maxResults
的最大值为100
。 -
orderBy
的 Enum 的电子邮件似乎是EMAIL
。 Ref -
在您的脚本中,
setValues
用于循环并使用相同的范围。在这种情况下,每个循环都会覆盖这些值。
当以上几点反映到你的脚本中时,它变成如下。
修改后的脚本:
请按如下方式修改您的脚本。
从:var rows = [];
var pageToken;
var count = 0;
do {
var page = AdminDirectory.Mobiledevices.list({
orderBy: 'email',maxResults: 500,pageToken: pageToken
});
var users = page.mobiledevices;
if (users) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
rows.push([user.name,user.email,user.deviceId,user.model,user.type,user.status,user.lastSync]);
}
// Append the results.
sheet.getRange(2,1,rows.length,headers.length).setValues(rows);
}
else {
Logger.log('No users found.');
}
pageToken = page.nextPageToken;
} while (pageToken);
到:
var customerId = "###"; // <--- Please set customerId.
var rows = [];
var pageToken;
var count = 0; // It seems that this variable is not used in the script.
do {
var page = AdminDirectory.Mobiledevices.list(customerId,{
orderBy: 'EMAIL',maxResults: 100,pageToken: pageToken
});
var users = page.mobiledevices;
if (users.length > 0) {
for (var i = 0; i < users.length; i++) {
var user = users[i];
rows.push([user.name,user.lastSync]);
}
} else {
Logger.log('No users found.');
}
pageToken = page.nextPageToken;
} while (pageToken);
if (rows.length > 0) {
sheet.getRange(2,headers.length).setValues(rows);
}
注意:
- 在这个修改后的脚本中,假设您可以使用
AdminDirectory.Mobiledevices.list
检索值。请注意这一点。
参考:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。