如何有效地将开发人员元数据添加到工作表的 row/column 范围?

How to efficiently add developer metadata to sheets' row/column ranges?

我正在尝试使用 Google Apps 脚本将开发人员元数据添加到某些行范围。到目前为止,我拼凑了这段代码:

function updateMetadata() {
  var sheet = SpreadsheetApp.openById("<sheet id>");
  var dataRange = sheet.getDataRange();
  var productNameRanges = dataRange.getMergedRanges();
  productNameRanges.forEach(function(productRange){
    var productName = productRange.getCell(1, 1).getValue();
    for (var j=productRange.getRow(); j<=productRange.getLastRow(); j++){
      var range = sheet.getRange(j+":"+j);
      // Remove old metadata
      range.getDeveloperMetadata().forEach(function(md){
        md.remove();
      });
      // Add new metadata
      range.addDeveloperMetadata(
        "product_name", 
        productName, 
        SpreadsheetApp.DeveloperMetadataVisibility.PROJECT
      );
    }
  });
}

这样做的目的应该是用元数据值标记合并的单元格范围,以便可以通过合并的单元格的值检索这些范围。不过到目前为止,该函数从未终止,显示的最后一次执行持续时间约为 8 秒。虽然元数据仍然会被修改,但我从未检查过它是否适用于所有范围。

是否有任何其他(有效或完全正确的)方法可以使用应用程序脚本实现此目的?我是否可以通过单个方法调用以某种方式标记行范围而不是遍历行(根据我尝试时收到的错误消息,这是不可能的)?