Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 设置Google Sheets列元数据-未设置工作表ID-查看电子表格列是否移动_Google Apps Script_Google Sheets_Metadata_Google Sheets Api - Fatal编程技术网

Google apps script 设置Google 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

我正在使用高级驱动器服务设置Sheets列元数据。正在设置列ID,我可以检索它,但未设置
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()`like
response=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
时,不会添加属性。这对解决您的问题有用吗?如果你的问题已经解决了,我很抱歉。