通过 Google 报告 API 通过 google 脚本检索移动设备报告
Retrieve Mobile Device Report via Google Reports API via google scripts
我正在尝试检索移动设备报告,但我不断收到此错误:“API 调用 directory.mobiledevices.list 失败,出现错误:错误请求”。
我认为问题出在 customerId 上。我应该使用什么来检索所有移动设备信息?我试过使用“全部”并定义域名,但没有成功。
非常感谢您的时间和投入! 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时,似乎在目录API中的“方法:mobiledevices.list”的方法中,需要customerId
如下使用。
customerId
: The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the my_customer alias to represent your account's customerId. The customerId is also returned as part of the Users resource.
- 但是在你的脚本中,没有使用这个。由此,
AdminDirectory.Mobiledevices.list
的参数不正确。我认为这就是您出现“Bad Request”问题的原因。
maxResults
的最大值为100
。
orderBy
的Enum的email好像是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.email, user.deviceId, user.model, user.type, user.status, user.lastSync]);
}
} else {
Logger.log('No users found.');
}
pageToken = page.nextPageToken;
} while (pageToken);
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
注:
- 在此修改后的脚本中,假定您可以使用
AdminDirectory.Mobiledevices.list
检索值。请注意这一点。
参考:
我正在尝试检索移动设备报告,但我不断收到此错误:“API 调用 directory.mobiledevices.list 失败,出现错误:错误请求”。
我认为问题出在 customerId 上。我应该使用什么来检索所有移动设备信息?我试过使用“全部”并定义域名,但没有成功。
非常感谢您的时间和投入! 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时,似乎在目录API中的“方法:mobiledevices.list”的方法中,需要
customerId
如下使用。customerId
: The unique ID for the customer's Google Workspace account. As an account administrator, you can also use the my_customer alias to represent your account's customerId. The customerId is also returned as part of the Users resource.- 但是在你的脚本中,没有使用这个。由此,
AdminDirectory.Mobiledevices.list
的参数不正确。我认为这就是您出现“Bad Request”问题的原因。
- 但是在你的脚本中,没有使用这个。由此,
maxResults
的最大值为100
。orderBy
的Enum的email好像是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.email, user.deviceId, user.model, user.type, user.status, user.lastSync]);
}
} else {
Logger.log('No users found.');
}
pageToken = page.nextPageToken;
} while (pageToken);
if (rows.length > 0) {
sheet.getRange(2, 1, rows.length, headers.length).setValues(rows);
}
注:
- 在此修改后的脚本中,假定您可以使用
AdminDirectory.Mobiledevices.list
检索值。请注意这一点。