You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于App Maker User Picker直接返回邮箱列表的技术咨询

无需数据源,直接从User Picker获取邮箱列表传给Server Script

当然可以不用数据源来实现这个需求!我之前做类似功能的时候也不想额外创建数据源,下面是直接可行的方案,完全贴合你的需求:

方案:客户端直接提取邮箱并调用Server Script

这是最简洁的实现方式,不需要依赖任何数据源,步骤如下:

  1. 给你的User Picker组件设置一个清晰的ID,比如memberPicker(方便在脚本里快速定位)
  2. 在触发添加操作的按钮(比如「添加成员」按钮)的onClick事件中添加客户端脚本:
    // 获取User Picker选中的用户集合
    const selectedUsers = app.pages.你的页面名称.widgets.memberPicker.value;
    
    // 兼容单选/多选模式:如果是单选,把单个用户转为数组统一处理
    const userArray = Array.isArray(selectedUsers) ? selectedUsers : [selectedUsers];
    // 提取所有选中用户的邮箱地址
    const emailList = userArray.map(user => user.email);
    
    // 调用你的Server Script函数,传递邮箱列表
    google.script.run
      .withSuccessHandler(() => {
        app.showToast('成员已成功添加到Team Drive!');
        // 可选操作:清空User Picker的选中状态
        app.pages.你的页面名称.widgets.memberPicker.value = [];
      })
      .withFailureHandler(error => {
        app.showToast(`添加失败:${error.message}`);
      })
      .addTeamDriveMembers(emailList); // 替换成你实际的Server Script函数名
    
  3. 在你的Server Script中接收邮箱列表参数,编写Team Drive成员添加逻辑:
    function addTeamDriveMembers(emailList) {
      const teamDriveId = '你的Team Drive唯一ID'; // 替换为实际的Drive ID
      
      emailList.forEach(email => {
        // 使用Drive API添加权限,这里以设置「编辑者」权限为例
        Drive.Permissions.insert(
          {
            role: 'writer',
            type: 'user',
            value: email
          },
          teamDriveId,
          {
            sendNotificationEmails: true // 按需设置是否发送通知邮件
          }
        );
      });
    }
    

关键注意点

  • 确认User Picker的Selection Mode设置正确:需要多选就设为Multiple,单个用户则设为Single
  • 确保你的App Maker项目已经启用了Drive API(在项目设置的「高级服务」里开启)

内容的提问来源于stack exchange,提问作者Daisy QL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:17:22