API листа Google - сбросить нумерованное имя листа - PullRequest
0 голосов
/ 17 июня 2019

Я использую API google sheet с этой логикой для каждого запроса:

  • создать лист,
  • добавить туда пользовательский запрос (формула),
  • результаты запроса fecth,
  • удалить созданный лист.

Код создания является последующим с Laravel:

class GoogleSheetsApiClientManager {

    private $client;//authorized API client.
    private $service = null;

    public function __construct($apiOptions) {
        $this->client = new Google_Client();
        $this->client->setApplicationName(array_get($apiOptions, 'application_name', 'Google Sheets API PHP'));
        $this->client->setScopes(array_get($apiOptions, 'scope', Google_Service_Sheets::SPREADSHEETS));
        $this->client->setAuthConfig(array_get($apiOptions, 'credential_path'));
        $this->client->setAccessType('offline');

        $this->service = new Google_Service_Sheets($this->client);
    }

    public function addNewSheet($spreadsheetId, $hidden = false, $sheetName = false){
        try {
            $properties = [
                'hidden' => $hidden
            ];
            if($sheetName){
                $properties['title'] = $sheetName;
            }
            $body = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest([
                'requests' => [
                    'addSheet' => [
                        'properties' => $properties
                    ]
                ]
            ]);
            $result = $this->service->spreadsheets->batchUpdate($spreadsheetId, $body);
            return $result;
        }
        catch (\Exception $exception) {
            Log::error('Add new sheet using Google Sheet API : '.$exception->getMessage());
            return false;
        }
    }

}

И звонок такой:

$apiOptions = [
            'application_name' => 'My app name',
            'credential_path' => __DIR__.'/service_account-secret.json'
        ];
$googleSheetManager = new GoogleSheetsApiClientManager($apiOptions);
$spreadsheetId = '--theSpreasheetId--';
$mySheet = $googleSheetManager->addNewSheet($spreadsheetId);

Проблема: каждый раз, когда я создаю новый лист, его имя основывается на последнем, созданном. Например: имя последнего листа sheet5, даже sheet5 было удалено. Я получил новый лист с именем sheet6.

Я хотел бы иметь минимально возможное имя, означающее, что если sheet5 & sheet4 нет (но присутствует sheet3), я хотел бы новое имя sheet4, а не бесконечное увеличение имя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...