【问题标题】:How to name a Google Drive folder based on cell value in Google Sheets如何根据 Google 表格中的单元格值命名 Google Drive 文件夹
【发布时间】:2019-09-15 20:53:58
【问题描述】:

我需要重命名现有的 Google Drive 文件夹以匹配 Google 表格中特定表格的单元格 A1 中的值。

每个工作表中的单元格 A1 包含一个下拉选择。每个工作表都有一个文件夹,其中包含特定于该工作表的文档。我希望每个文件夹始终被命名为该特定工作表的 A1 中显示的值。

例如

文件夹 1 名称 = 工作表 1 的单元格 A1
文件夹 2 名称 = 工作表 2 的单元格 A1
等等等等

是否可以将文件夹名称链接到特定单元格的内容?

【问题讨论】:

  • @Cooper 请尝试使用正确的格式 -code in this case- 即使它只是一个评论。从其他方面看,它看起来相当混乱,而且不是很有帮助,尤其是在涉及到新贡献者时。
  • 你试过DriveApp.getFileById(id).setName(SpreadsheetApp.getActive().getRange().getValue());

标签: google-apps-script google-sheets google-drive-api


【解决方案1】:
  • 您想根据单元格“A1”的值更改文件夹名称。
  • 单元格“A1”有下拉列表。
  • 当“A1”的值被修改时,您还想通过修改后的值来修改文件夹名称。
  • 您希望使用 Google Apps 脚本实现此目的。

如果我的理解是正确的,那么这个答案呢?请认为这只是几个答案之一。

问题和解决方法:

  • 在 Google Drive,所有文件和文件夹都由 ID 管理。所以可以为同一个文件夹下的多个文件夹设置同一个文件夹名。
  • 例如cellA1 of sheet 1为“sample1”,当下拉列表将“sample1”更改为“sample2”时,如果未检测到此修改,则无法跟踪新名称的文件夹。

因此,作为几种解决方法之一,我想建议使用 OnEdit 事件触发器和开发人员元数据来实现您的情况。

  • OnEdit 事件触发器用于在修改单元格时执行脚本。
  • 开发者元数据用于设置文件夹 ID。使用文件夹 ID 修改文件夹名称。
    • 我认为通过知道文件夹ID,修改文件夹名称时可以降低处理成本。

示例脚本:

此解决方法中有 2 个脚本。首先,将以下脚本复制并粘贴到电子表格的容器绑定脚本中。

// Please run this function for the first time. By this script, the current folder IDs are set to the developer metadata.
function setDevelopermetadata() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ss.getSheets();
  sheets.forEach(function(sheet) {
    var folderName = sheet.getRange("A1").getValue();
    var folders = DriveApp.getFoldersByName(folderName);
    if (folders.hasNext()) {
      sheet.addDeveloperMetadata("folderId", folders.next().getId());
    }
  });
}

// Please install OnEdit event trigger to this function as the installable trigger.
function installableOnEdit(e) {
  var range = e.range;
  var sheet = range.getSheet();
  if (range.getA1Notation() == "A1") {
    sheet.getDeveloperMetadata().forEach(function(d) {
      if (d.getKey() == "folderId") {
        DriveApp.getFolderById(d.getValue()).setName(e.value);
      }
    });
  }
}

用法:

  1. 首先,请运行setDevelopermetadata()的功能。通过此脚本,当前文件夹 ID 被设置为每个工作表的开发人员元数据。

    • 所以这个函数假设每个工作表的单元格“A1”的当前文件夹名称与实际文件夹名称相对应。
  2. 请将 OnEdit 事件触发器安装到installableOnEdit(e) 的函数中作为可安装触发器。

    • 打开脚本编辑器。
    • 编辑 -> 当前项目的触发器。
    • 点击“添加触发器”。
    • 将installableOnEdit 设置为“选择要运行的函数”。
    • 为“选择事件源”设置“来自电子表格”。
    • 将“选择事件类型”设置为“编辑时”。
  3. 手动修改电子表格单元格“A1”的值。这样,触发 OnEdit 事件触发器并运行脚本。然后,文件夹名称被新值修改。

注意:

  • 在此示例脚本中,根据您的问题,它假定活动电子表格中的所有工作表在单元格“A1”处具有文件夹名称的值。如果我对此有误解,您能否提供详细信息?
  • 如果您不想使用 OnEdit 事件触发器,请告诉我。

参考资料:

如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    • 2022-11-27
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多