手动设置用户绑定属性

Posted

技术标签:

【中文标题】手动设置用户绑定属性【英文标题】:Manually setting user bound properties 【发布时间】:2021-04-26 00:44:32 【问题描述】:

我正在编写一个脚本,该脚本需要存储 API 密钥。 在旧编辑器中,有一个选项可以直接从编辑器的 UI 中设置用户属性(同时已被删除),而我在新编辑器中看不到任何类似的选项。我看到了多个答案,详细说明了如何通过电子表格的 UI 或其他“挑剔”的方式来设置它们。 是否可以直接通过 Script UI 设置该属性?

【问题讨论】:

【参考方案1】:

在新编辑器中不再可用。我有两个选择。

    切换到旧版编辑器以使用脚本 UI 设置您的属性。

    您可以使用Properties Service 将简单数据存储在一个脚本(脚本属性)、脚本的一个用户(用户属性)或一个文档(文档属性)范围内的键值对中。


Properties Service Methods:

getDocumentProperties(),获取所有用户都可以在打开的文档、电子表格或表单中访问的属性存储(仅适用于此脚本)。

getScriptProperties(), 获取所有用户都可以访问的属性存储,但只能在此脚本内。

getUserProperties(), 获取只有当前用户才能访问的属性存储,并且只能在此脚本中访问。


如何创建用户属性键值对的示例:

  // Sets several user properties, then retrieves them and logs them.
  var userProperties = PropertiesService.getUserProperties();
  userProperties.setProperties(
    'cow': 'moo',
    'sheep': 'baa',
    'chicken': 'cluck'
  );

  var animalSounds = userProperties.getProperties();
  for (var kind in animalSounds) 
    Logger.log('A %s goes %s!', kind, animalSounds[kind]);
  

  var keys = userProperties.getKeys();
  keys.forEach(key=>
    Logger.log("Key: "+key+", Value: "+userProperties.getProperty(key));
  )

输出:


工作原理:

    当您获得PropertiesService.getUserProperties() 时,它将返回一个properties object,作为访问您的用户属性的接口

    您可以使用setProperties(properties) 设置用户特定的键值对。

    您可以使用getProperty(key) 或getProperties() 访问您的键值对,如示例代码所示。


测试

我在添加用户属性后修改了脚本并在 2 个不同的用户(所有者和另一个用户)上运行代码,以验证添加的用户属性是否仅对创建它的用户可用。

代码:

  var userProperties = PropertiesService.getUserProperties();

  var keys = userProperties.getKeys();
  Logger.log(keys.length);
  keys.forEach(key=>
    Logger.log("Key: "+key+", Value: "+userProperties.getProperty(key));
  )

所有者结果:

另一个用户结果:

【讨论】:

以上是关于手动设置用户绑定属性的主要内容,如果未能解决你的问题,请参考以下文章

绑定到 ListView 的 SelectedItem 属性时设置初始选定项

齐治堡垒机二次密码怎么重新绑定

LINUX驱动手动绑定和解绑定

遵循MVVM模式,如何创建“设置”功能,在其他用户控件中设置数据绑定项值?

Linux驱动手动绑定和解绑定方法

设置绑定到 WPF 用户控件内的自定义 DependencyProperty