Google apps script 设置Google Sheets列元数据-未设置工作表ID-查看电子表格列是否移动
我正在使用高级驱动器服务设置Sheets列元数据。正在设置列ID,我可以检索它,但未设置Google apps script 设置Google Sheets列元数据-未设置工作表ID-查看电子表格列是否移动,google-apps-script,google-sheets,metadata,google-sheets-api,Google Apps Script,Google Sheets,Metadata,Google Sheets Api,我正在使用高级驱动器服务设置Sheets列元数据。正在设置列ID,我可以检索它,但未设置sheetId属性 function setShColumnMetadata() { var request,response,ss,sh; ss = SpreadsheetApp.getActiveSpreadsheet(); sh = ss.getSheetByName('Employees'); request = [ { createDevelop
sheetId
属性
function setShColumnMetadata() {
var request,response,ss,sh;
ss = SpreadsheetApp.getActiveSpreadsheet();
sh = ss.getSheetByName('Employees');
request = [
{
createDeveloperMetadata:{
developerMetadata:{
metadataKey:"employeeSh_DeptIdCol",
metadataValue:JSON.stringify({
writtenBy:Session.getEffectiveUser().getEmail(),
createdAt:new Date().getTime()
}),
location:{
//See https://developers.google.com/sheets/api/reference/rest/v4/DimensionRange
dimensionRange: {
"sheetId":sh.getSheetId(),
dimension:"COLUMNS",
startIndex:9,//column number + 1 is the real column being watched
endIndex:10
//Even though the end index is one more than the start index its only one column
}
},
visibility:"DOCUMENT"
}
}
}
];
response = Sheets.Spreadsheets.batchUpdate({requests:request}, ss.getId());
Logger.log('response: ' + response)
}
核查答复:
{
"replies":[
{"createDeveloperMetadata":
{"developerMetadata":
{"metadataKey":"employeeSh_DeptIdCol",
"visibility":"DOCUMENT",
"metadataValue":"{
\"writtenBy\":\"example@gmail.com\",
\"createdAt\":1530996621771
}",
"metadataId":1988973086,
"location":{
"dimensionRange":{
"startIndex":9,
"endIndex":10,
"dimension":"COLUMNS"
},
"locationType":"COLUMN"
}
}
}
}],
"spreadsheetId":"ID Removed"
}
问题出在尺寸范围内
这就是它的命名方式:
dimensionRange: {
//See https://developers.google.com/sheets/api/reference/rest/v4/DimensionRange
"sheetId":sh.getSheetId(),
dimension:"COLUMNS",
startIndex:9, //column number
endIndex:10
//Even though the end index is one more than the
//start index its only one column
}
这就是我们要回来的:
"dimensionRange":{
"startIndex":9,
"endIndex":10,
"dimension":"COLUMNS"
},
没有sheetId
如果使用以下代码获取保存的元数据:
function getTheSettingsBack() {
var metaDataClass,ssID,stateFound;
ssID = SpreadsheetApp.getActiveSpreadsheet().getId();
metaDataClass = Sheets.Spreadsheets.DeveloperMetadata;
stateFound = metaDataClass.search({
dataFilters:[{
developerMetadataLookup: {
metadataKey: 'employeeSh_DeptIdCol'
}}]
}, ssID);
Logger.log('stateFound: ' + stateFound)
}
它返回:
{"matchedDeveloperMetadata":
[{"dataFilters":[{"developerMetadataLookup":
{"metadataKey":"employeeSh_DeptIdCol"}}],"developerMetadata":
{"metadataKey":"employeeSh_DeptIdCol","visibility":"DOCUMENT",
"metadataValue":"{\"writtenBy\":\"account name here\",\"createdAt\":1530997558830}",
"metadataId":459573349,
"location":{
"dimensionRange":{"startIndex":9,"endIndex":10,"dimension":"COLUMNS"},
"locationType":"COLUMN"}}}]}
仍然没有sheetId
我不知道我是否做错了什么,或者高级纸张服务是否有问题
Sheets Advanced API已打开,并在我的云控制台中打开,版本为版本4
我可以确认,当
图纸ID===0
时,它不包括在尺寸范围内,但当在任何其他图纸上工作时(即
时,如果它不是0
),图纸ID包括在尺寸范围内。也许是气体方面的错误错误
我正在使用PHP客户端库与GoogleSheetsAPI交互,现在我已经添加了以下内容来解决这个问题
if($sheetId === null)
$sheetId = 0 ;
谷歌最好能解决这个问题,以免绊倒其他用户。虽然我不确定这对你是否有用,但我想报告一下。在我的环境中,我确认当使用
setShColumnMetadata()
发送请求正文时,sheetId
包含在响应中。我还确认,在运行setShColumnMetadata()
之后,使用getTheSettingsBack()
检索的值具有sheetId
。那么,试试这个新的电子表格怎么样?我认为当创建一个新的电子表格时,这个问题可能会被消除。如果这对您的情况没有帮助,我很抱歉。谢谢您测试代码。我确实尝试了一个新的电子表格,但仍然得到了相同的结果,对象信息中缺少sheetId
。但是,我刚刚发现,我真的不需要这些信息。在这一点上,这对我来说无关紧要。我设置了要查看的列的元数据,移动了该列,并在元数据中更改了startIndex
和endIndex
设置。这才是我真正需要的。所以,尽管我想知道为什么我的付费账户会发生这种情况,但我可能并不在乎是否可以跟踪正在移动的栏目。谢谢您提供的更多信息。我可以提议另一个测试吗?另一个建议是,如何使用“字段”来表示Sheets.Spreadsheets.batchUpdate()`likeresponse=Sheets.Spreadsheets.batchUpdate({requests:request},ss.getId(),{fields:“responses/createDeveloperMetadata/developerMetadata/location/dimensionRange/sheetId”})代码>?在我的环境中,运行setShColumnMetadata()
时,只能检索sheetId。如果这仍然是相同的结果,我很抱歉。我尝试了新的代码,它运行时没有任何错误,但我仍然得到相同的结果。如果您的问题仍然没有得到解决,这个如何?当我创建我的应用程序时,我偶然发现了问题的原因。当脚本用于具有gid=0
的工作表时,sheetId
不包括在dimensionRange
中。当脚本用于带有gid=#########
的工作表时,sheetId
包含在维度范围中。我认为这可能是GAS-side的内部问题,因为当值为0
时,不会添加属性。这对解决您的问题有用吗?如果你的问题已经解决了,我很抱歉。