向Google云端硬盘创建文档并更改其纸张大小

时间:2017-02-21 19:33:33

标签: google-drive-api google-docs google-api-php-client

我使用PHP库上传和更新HTML文件并将其转换为原生Google文档

include_once ROOT.'/google-api-php-client/vendor/autoload.php';

$client = new Google_Client();

$credentialsFile = ROOT.'/google-api-php-client/service_account.json';
if (!file_exists($credentialsFile)) {
    throw new RuntimeException('Service account credentials Not Found!');
}

$client->setAuthConfig($credentialsFile);
$client->setScopes(Google_Service_Drive::DRIVE);

$service = new Google_Service_Drive($client);

/**
   * Проверка существования папки для документов
   */

$optParams = array(
  'q' => "name='Документы'"
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
exit('Нет папки для документов');
} else {
  foreach ($results->getFiles() as $file) {
$papka_doc = $file->getId();
  }
 }
/**
   * Обращение к шаблону
   */

$optParams = array(
  'q' => "name='{$tpl_name}' "
);
$results = $service->files->listFiles($optParams);
if (count($results->getFiles()) == 0) {
exit('Нет шаблона');
} else {
  foreach ($results->getFiles() as $file) {
$sh_id = $file->getId();
  }
 }
/**
   * Получение контента из шаблона
   */

$content = $service->files->export($sh_id, 'text/html', array(
'alt' => 'media' ));
$dd =$content->getBody();

$chto = array_keys ($replace);
$chto= $this->translit($chto);


$nachto =array_values ($replace);
$nachto= $this->translit($nachto);


$dd = str_replace($chto, $nachto, $dd);



/**
   * Создание основы для документа
   */
$fileId = $sh_id;
$doc_name = $tpl_name.'_'.date('dmY-Hi');
$fileMetadata = new Google_Service_Drive_DriveFile(array(
  'name' => $doc_name,
  'parents' => array($papka_doc)));
$file = $service->files->copy($fileId, $fileMetadata, array(
  'fields' => 'id'));
$new_file_id = $file->id;

/**
   * Вставка контента в новый документ
   */
$fileMetadata = array(
    'data' => $dd);
$filenew = new Google_Service_Drive_DriveFile();
$file = $service->files->update($new_file_id, $filenew, $fileMetadata);

它会创建一个纸张大小设置为Letter的文档。对于我的帐户,默认值为A4,我希望新创建的文档采用此格式。 有没有人知道如何设置上传文件的纸张尺寸?

P.S。:我看到了this线程,但可能已经出现了一种方法?

2 个答案:

答案 0 :(得分:0)

Google云端硬盘包含所谓的file resource文件,它基本上是有关该文件的信息的元数据列表。其中一些字段可以更新一些不能。在我上面链接的页面上写下关于状态的字段。

没有关于纸张尺寸的信息。这可能是因为驱动器并不关心纸张尺寸,这是本地机器在打印文件时设置的。

答案:不,您无法为Google云端硬盘上的文件设置纸张尺寸

答案 1 :(得分:0)

您可以使用Apps脚本执行此操作。这有点hacky,但应该工作。你需要: -

  1. 创建使用文档服务的Apps脚本功能(请参阅https://developers.google.com/apps-script/reference/documenthttps://developers.google.com/apps-script/reference/document/body#setPageHeight%28Number%29来操作给定文档ID的页面参数
  2. 发布该脚本https://developers.google.com/apps-script/guides/content,以便将其称为端点。
  3. 按照您当前的方式导入文件后,G Drive会将新创建的文件的ID返回到$file。使用此ID($file->getId())从步骤2调用端点。