我正在使用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,
]
);
}
}
如有任何疑问,请随时通知我。对不起,我的英语水平很差。
1条答案
按热度按时间xuo3flqw1#
检查您的代码和文档,您似乎缺少指定
Data Filter
和DeveloperMetadata Object
(包括声明要更新的字段的字段掩码)的内容。请检查有关如何更新开发人员元数据的文档,以证实您正在正确执行此操作。下面是更新开发人员元数据的示例,它与您当前拥有的元数据相差不远: