微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过谷歌脚本通过谷歌报告 API 检索移动设备报告 修改点:修改后的脚本:注意:参考:

如何解决通过谷歌脚本通过谷歌报告 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 的电子邮件似乎是 EMAILRef

  • 在您的脚本中,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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?