在Google电子表格中获取所有开发人员元数据

时间:2019-11-12 16:13:03

标签: google-apps-script google-sheets

我有一个Google电子表格,其中包含许多工作表以及一些与不同工作表中的某些行和列相关联的元数据。我想让一个脚本收集整个文件中的所有元数据,以便检查其状态。

我可以使用以下命令很容易地获得行或列的元数据:

function showMetadata(range){
  var metadata = range.getDeveloperMetadata();
  var msg = metadata[0].getLocation().getLocationType();
  for (var i = 0; i < metadata.length; i++){
    msg = msg+"\\n"+metadata[i].getKey()+": "+metadata[i].getValue()
  }
  Browser.msgBox(msg)
}

有没有一种方法可以获取所有元数据,而不必遍历每个工作表,行和列并对其分别调用.getDeveloperMetadata()

1 个答案:

答案 0 :(得分:1)

使用find() method中的DeveloperMetadataFinder class

这是一个简单的例子:

function addMetadata() {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var sheet = spreadsheet.getActiveSheet();
    var range = sheet.getRange('1:1');
    sheet.addDeveloperMetadata('sheet');
    spreadsheet.addDeveloperMetadata('spreadsheet');
    range.addDeveloperMetadata('range');
}

function getMetadata() {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
    var metadataFinder = spreadsheet.createDeveloperMetadataFinder();
    results = metadataFinder.find();
    for (var i = 0; i < results.length; i++) {
       Logger.log('id: ' + results[i].getId() + ', key: ' + results[i].getKey());
    }
}

运行addMetadata()用3个元数据实例填充新的电子表格后,这是运行getMetadata()的日志输出:

[19-11-12 08:34:54:874 PST] id: 375645033, key: spreadsheet
[19-11-12 08:34:54:875 PST] id: 802864327, key: range
[19-11-12 08:34:54:875 PST] id: 569198748, key: sheet