我正在构建一个 Google 表格插件,它将一些信息显示在工作表中,并通过PropertiesService
将数据保存到文档存储中。我知道如果我想将数据与新工作表复制/链接,则无法检查工作表何时被复制。我听说并读到了DeveloperMetadata
.但没有意识到:当源工作表复制到新工作表时,每个工作表DeveloperMetadata
是副本吗?我试了试,看到了,没有。
那么,对吗?如果"是",在这种情况下,每个文档使用PropertiesService
和每个工作表使用DeveloperMetadata
没有区别吗?
UPD:(大约DeveloperMetadata
(
我创建了一个新的电子表格并写入脚本编辑器 2 函数:
function showAllMetadata()
{
var allSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var allDeveloperMetadata = allSheets.map(function(sheet){
return {
id: sheet.getSheetId(),
name: sheet.getName(),
metadata: sheet.getDeveloperMetadata().map(function(meta){ return meta.getValue() })
}
});
Logger.log(JSON.stringify(allDeveloperMetadata));
}
function addMetadataToCurrentSheet()
{
SpreadsheetApp
.getActiveSheet()
.addDeveloperMetadata('metadata', 'foo');
showAllMetadata();
}
然后我做了:
- 跑
addMetadataToCurrentSheet()
锯
[{"id":0,"name":"Sheet1","metadata":["foo"]}]
- 通过单击"复制"按钮复制此工作表
- 跑
showAllMetadata()
锯
[
{"id":0,"name":"Sheet1","metadata":["foo"]},
{"id":1107155653,"name":"Copy of Sheet1","metadata":[]}
]
但我期待看到
[
{"id":0,"name":"Sheet1","metadata":["foo"]},
{"id":1107155653,"name":"Copy of Sheet1","metadata":["foo"]}
]
汇总收到的信息:
每张纸DeveloperMetadata
将一张纸与其存储联系起来,如果我们想复制这张纸及其元数据并执行以下操作:
- 复制电子表格 - 元数据存在
- 通过
Copy to
按钮或通过copyTo
方法复制工作表 - 元数据存在 - 通过
Duplicate
按钮复制工作表 - 元数据不存在
希望Duplicate
按钮将来能够正常工作。