如何使用 Appscript 从 Admin SDK >> Reports API 将已删除、存档、暂停的用户数据提取到 Google 表格

问题描述

如何使用 Appscript 从 Admin SDK >> Reports API 将已删除、存档、暂停的 USERS 数据(用户电子邮件删除日期、组织单位路径、存档日期、暂停日期)导入 Google 表格。谢谢。

解决方法

欢迎使用 Stackoverflow。请注意在尽可能多地发布问题时,请始终包含您在自己这边完成的任何研究/示例脚本。请参阅有关 How do I ask a good question? 的指南,因为这是该社区不可或缺的一部分。

建议:

您可以使用下面的示例脚本作为参考。此脚本基于来自 Google Apps Script Quickstart

的示例
function listUsers() {
  
    var sheet = SpreadsheetApp.getActive().getActiveSheet();
    var values = [];
    var userKey = 'all';
    var applicationName = 'admin';
    var optionalArgs = {
      maxResults: 100
    };

    var response = AdminReports.Activities.list(userKey,applicationName,optionalArgs);
    var activities = response.items;
    if (activities && activities.length > 0) {
      Logger.log('REPORTS:');
      for (i = 0; i < activities.length; i++) {
        var activity = activities[i];

        //ONLY GET DATA IF ACTION IS EITHER "SUSPEND_USER","DELETE_USER",or "ARCHIVE_USER"
        if(activity.events[0].name == "SUSPEND_USER" || activity.events[0].name == "DELETE_USER" || activity.events[0].name == "ARCHIVE_USER"){
            Logger.log('%s: %s (%s)',activity.id.time,activity.events[0].parameters[0].value,activity.events[0].name);
            //RETRIEVES THE TIMESTAMP,USER'S EMAIL,& THE EVENT NAME THAT WAS PERFORMED TO THE USER
            values = [[activity.id.time,activity.events[0].name]]; 

            //SET THE DATA TO SHEET
            var lrow = sheet.getLastRow()+1;
            sheet.getRange("A"+lrow+":C"+lrow).setValues(values); 
        }

      }
    } else {
      Logger.log('No reports found.');
    }
}

注意:

在运行脚本之前,您需要在 Apps 脚本编辑器中添加 AdminReports API:

1.点击 Services 加号图标

enter image description here

2.选择Admin SDK API

enter image description here

3.点击 version 下拉菜单,选择 reports_v1Add

enter image description here

样本表

enter image description here

结果

运行示例脚本后,执行操作的时间戳用户电子邮件地址和执行的操作(暂停/Deleted/Archived) 将添加到工作表中:

enter image description here

以下是执行日志结果供参考:

enter image description here

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...