PHP Google Sheets копирует лист из одной таблицы в другуюPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 PHP Google Sheets копирует лист из одной таблицы в другую

Сообщение Anonymous »

Для этого необходимо использовать API Google Таблиц и PHP.
У меня есть одноэлементный класс-оболочка (давайте посмотрим правде в глаза, они нужны большинству API Google PHP), экземпляром которого является мой клиентский класс

Код: Выделить всё

$gsheets
У меня это работало раньше, и все еще демонстрируется, что у меня есть доступ к API. Я создаю новую электронную таблицу, запустив:

Код: Выделить всё

$newspreadsheetTitle="ABC123456";
$newdocument = $gsheets->newSpreadsheetDocument($newspreadsheetTitle);
Который вызывает мой собственный метод класса-оболочки:

Код: Выделить всё

  public function newSpreadsheetDocument($title) {
$newspread = new Google_Service_Sheets_Spreadsheet([
'properties' => [
'title' => $title
]
]);
$newspread = $this->service->spreadsheets->create($newspread);
$id = $newspread->getSpreadsheetId();
return ["ID" => $newspread->getSpreadsheetId(), "url" => $newspread->getSpreadsheetUrl()];
}
На этом этапе создается новая электронная таблица под названием ABC123456, которая возвращает ожидаемый идентификатор и URL-адрес, доступ к которым можно получить, вставив ссылку в адресную строку браузера с возвращенным идентификатором.
Это демонстрирует, что

Код: Выделить всё

$this->service
является полнофункциональным клиентом Google Таблиц в моем классе-оболочке и создает документ электронной таблицы с именем $spreadsheetRef.
Итак, теперь мой вопрос :
Затем я хочу скопировать содержимое (вся вкладка/лист) из этого шаблона в эту вновь созданную таблицу, поэтому я звоню

Код: Выделить всё

  $gsheets->copySheetFromTo($POtemplateID, $newdocument["ID"], 0);
к моему методу экземпляра оболочки

Код: Выделить всё

  public function copySheetFromTo($sourceSpreadsheetFileId, $destinationSpreadsheetFileId, $sourceTabRef) {
$requestBody = new Google_Service_Sheets_CopySheetToAnotherSpreadsheetRequest();
$requestBody->setDestinationSpreadsheetId($destinationSpreadsheetFileId);
$response = $this->service->spreadsheets_sheets->copyTo($sourceSpreadsheetFileId, $sourceTabRef, $requestBody);

/*
$request = new Google_Service_Sheets_CopySheetToAnotherSpreadsheetRequest([
"destinationSpreadsheetId" => $toFileID
]);
$this->service->spreadsheets_sheets->copyTo($fromFileID, $fromTabName, $request);
*/
return $response;
}
Я пробовал несколько вариантов, например

Код: Выделить всё

      $gsheets->copySheetFromTo($POtemplateID, $newdocument["ID"], 0);
ошибка:

Код: Выделить всё

The sheet (0) does not exist.
и

Код: Выделить всё

      $gsheets->copySheetFromTo($POtemplateID, $newdocument["ID"], 1);
ошибка:

Код: Выделить всё

The sheet (1) does not exist.
и

Код: Выделить всё

  $gsheets->copySheetFromTo($POtemplateID, $newdocument["ID"], "template_sheet");//the name of the sheet tab to copy
ошибка

Код: Выделить всё

Invalid value at 'sheet_id' (TYPE_INT32), "template_sheet"
Пожалуйста, подскажите, какие параметры здесь неверны.

Подробнее здесь: https://stackoverflow.com/questions/791 ... to-another
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»