0

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

4

1 回答 1

1

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

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

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


属性服务方法:

  • 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));
  })

输出:

在此处输入图像描述


这个怎么运作:

  1. 当您获得PropertiesService.getUserProperties()时,它将返回一个属性对象,该对象充当访问用户属性的接口

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

  3. 您可以使用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));
  })

所有者结果:

在此处输入图像描述

另一个用户结果:

在此处输入图像描述

于 2021-01-21T15:49:21.710 回答