php 使用Google工作表API更新Google工作表的DeveloperMetadata

nom7f22z  于 2023-02-03  发布在  PHP
关注(0)|答案(1)|浏览(137)

我正在使用Google APIs Client Library for PHP。我可以创建和访问电子表格的DeveloperMetadata。但是不能更新DeveloperMetadata。请看下面的代码以更好地理解。

<?php
class GoogleSheetHelper {
    function update_dev_meta() {
    $dev_meta = new DeveloperMetadata();
    $dev_meta->setVisibility( 'DOCUMENT' );
    $dev_meta->setMetadataKey( 'new_meta_key' );
    $dev_meta->setMetadataValue( 'new_meta_value_updated' );

    $update_req = new UpdateDeveloperMetadataRequest();
    $update_req->setDeveloperMetadata( $dev_meta );
    $update_req->setFields( '*' );

    $request = new Request();
    $request->setUpdateDeveloperMetadata( $update_req );

    $batch_update = new BatchUpdateSpreadsheetRequest();
    $batch_update->setRequests( [ $request ] );

    $client  = $this->get_client();
    $service = new Sheets( $client );

    try {
        return $service->spreadsheets->batchUpdate( $spreadsheet_id, $batch_update );
    } catch ( Exception $ex ) {
        var_dump( $ex->getErrors() );

        return false;
    }
}

private function get_client( $scopes = [] ) {
    $credential = 'location/of/credential.json';

    if ( empty( $credential ) ) {
        return null;
    }

    $default_scopes = [
        'https://www.googleapis.com/auth/drive',
        'https://www.googleapis.com/auth/spreadsheets',
    ];

    return new Client(
        [
            'credentials' => $credential,
            'scopes'      => $default_scopes,
        ]
    );
}
}

如有任何疑问,请随时通知我。对不起,我的英语水平很差。

xuo3flqw

xuo3flqw1#

检查您的代码和文档,您似乎缺少指定Data FilterDeveloperMetadata Object(包括声明要更新的字段的字段掩码)的内容。请检查有关如何更新开发人员元数据的文档,以证实您正在正确执行此操作。
下面是更新开发人员元数据的示例,它与您当前拥有的元数据相差不远:

{
  "requests": [
    {
      "updateDeveloperMetadata": {
        "dataFilters": [
          {
            "developerMetadataLookup": {
              "metadataId": metadataId
            }
          }
        ],
        "developerMetadata": {
          "location": {
            "sheetId": sheetId
          },
          "metadataKey": "SalesUpdated"
        },
        "fields": "location,metadataKey"
      }
    }
  ]
}

相关问题