2017-02-21 23 views
0

Я использую библиотеку PHP, чтобы загрузить и обновить файл HTML и преобразовать его в родной документ Googleсоздание документа в Google Drive и изменить его размер бумаги

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); 

создает документ с форматом бумаги, установленным в Письме , Для моей учетной записи по умолчанию используется формат A4, и я хочу, чтобы вновь созданный документ находился в этом формате. Кто-нибудь знает, как установить размер бумаги для загруженного документа?

P.S .: Я видел this нить, но, возможно, появился способ?

+0

Я искал документы, но, к сожалению, я не нашел соответствующего примера. Как указано в [thread] (http://stackoverflow.com/questions/24183561/uploading-a-document-to-google-drive-and-setting-its-paper-size), он еще не поддерживается. Однако для этого вы можете указать [запрос функции] (https://productforums.google.com/forum/#!topic/drive/TESSj1GH1Xw). – abielita

ответ

0

Google привод содержит файлы в так называемом file resource, это в основном список метаданных информации о файле. Некоторые из этих полей могут быть обновлены, некоторые не могут. Поля, которые пишут о состоянии, указывают, что на странице, которую я связал выше.

Информация о размере бумаги отсутствует. Вероятно, это связано с тем, что диск не заботится о размере бумаги, который локальный компьютер устанавливает в момент его распечатки.

Ответ: Нет, вы не можете установить размер бумаги для файла на Google диск

0

Вы можете сделать это с Apps Script. Это немного взломанный, но должен работать. Вам необходимо: -

  1. создать функцию приложения сценария, который использует службу Document (см https://developers.google.com/apps-script/reference/document и https://developers.google.com/apps-script/reference/document/body#setPageHeight%28Number%29 манипулировать параметры страниц для данного документа ID
  2. Опубликовать этот сценарий https://developers.google.com/apps-script/guides/content так, что это может быть называется в качестве конечной точки.
  3. После того, как вы импортировать файл, как вы сейчас делаете, G Drive возвращает идентификатор вновь созданного файла в $file. Используйте этот идентификатор ($file->getId()), чтобы вызвать конечную точку с шага 2.
+0

Спасибо, я попробую –