Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 获取最近的日期&;使用AdminReports.Activities.list的每个用户的操作_Javascript_Google Apps Script_Google Sheets_Google Admin Sdk - Fatal编程技术网

Javascript 获取最近的日期&;使用AdminReports.Activities.list的每个用户的操作

Javascript 获取最近的日期&;使用AdminReports.Activities.list的每个用户的操作,javascript,google-apps-script,google-sheets,google-admin-sdk,Javascript,Google Apps Script,Google Sheets,Google Admin Sdk,我需要在Google Currents(以前的Google plus)中获取域中每个用户的最新活动 我使用的是'all'参数,而不是电子邮件地址 我已使用以下脚本进行了测试: function testFunc() { let target; if (testState == true) { target = "single.user@email.com"; } else if (testState == false) { target = &q

我需要在Google Currents(以前的Google plus)中获取域中每个用户的最新活动

我使用的是'all'参数,而不是电子邮件地址

我已使用以下脚本进行了测试:

function testFunc() {
  let target;

  if (testState == true) {
    target = "single.user@email.com";
  } else if (testState == false) {
    target = "all";
  } else {
    throw "State not defined";
  }

  const app = "gplus";

  const daysToCheck = 1;
  const now = new Date();
  const daysAgo = new Date(now.getTime() - daysToCheck * 24 * 60 * 60 * 1000);
  const date = daysAgo.toISOString();

  const optionalArgs = {
    startTime: date
  };

  let rows = [];

  let response;
  let pageToken;

  do {
    response = AdminReports.Activities.list(target, app, optionalArgs);
    let activities = response.items;

    if (activities) {
      activities.forEach(item => {
        let row = [
          new Date(item.id.time),
          item.actor.email,
          item.events[0].name
        ]
        rows.push(row)
      
      })
    } else {
      throw 'Error'
    }

    pageToken = response.nextPageToken;
  } while (pageToken);

  Logger.log(rows);
  /** NOTES
   * will eventually log this out to a spreadsheet
   */
}
但是,这将为一个人返回多个事件。我只需要返回域中每个用户的最新事件

有人对如何实现这一点有什么想法吗?

解决方案: 您可以按名称排序
数组,然后按时间降序,然后循环返回每个名称的第一个元素

示例代码:Logger.log(行)

rows.sort(函数(a,b){
如果(a[2]==b[2])
返回a[0]
  rows.sort(function(a,b) {
    if (a[2] == b[2])
      return a[0] < b[0] ? 1 : -1;
    return a[2] < b[2] ? -1 : 1;
  });

  let final = [];
  final.push(rows[0]);
  for (i = 1; i < rows.length; i++) {
    if (rows[i][2] != arr[i-1][2])
      final.push(rows[i]);
  }

  console.log(final);