我创建了一个文件夹,在该文件夹中我创建了2个文本文件,里面有一些文本。我也可以列出文件并在其中获取文本而不会出现问题。现在我正在尝试更新该文件内的文本,但我总是收到此错误:
"domain": "global",
"reason": "fieldNotWritable",
"message": "The resource body includes fields which are not directly writable."
我创建了一个类似https://developers.google.com/drive/v2/reference/files/update中提供的函数。
我使用此示例是因为在版本v3中,Google没有提供任何示例,我无法找到任何可以帮助我的内容。我的功能如下。
function updateFile ($service, $fileId, $newTitle, $newDescription, $newMimeType, $text) {
try {
// First retrieve the file from the API.
$file = $service->files->get($fileId);
// File's new metadata.
$file->setName($newTitle);
$file->setDescription($newDescription);
$file->setMimeType($newMimeType);
// File's new content.
$additionalParams = array(
'data' => $text,
'uploadType' => 'media'
);
// Send the request to the API.
$updatedFile = $service->files->update($fileId, $file, $additionalParams);
return $updatedFile;
} catch (Exception $e) {
print "An error occurred: " . $e->getMessage();
}
}
提前谢谢。
答案 0 :(得分:0)
基于此SO answer,在第3版中,使用return shampoo_instructions(num_cycles)
之类的内容会引发错误 update
。
解决方案是仅创建一个空的
fieldNotWritable
设置新值:File
注意:
File newContent = new File(); newContent.setTrashed(true); service.files().update(fileId, newContent).execute();
是指File
(不是com.google.api.services.drive.model.File
)。
此外,根据此documentation,您可以看到共享不是可写字段。您可以通过添加新权限来共享文件,并且可以通过读取共享属性来检查文件是否已共享。但是说文件是共享的,除了通过实际共享它,没有任何意义。 [Source.]