public function addSheet(Sheet $sheet) { $origSheet = $this->getSheet($sheet->getGoogleId(), $sheet->getSheetId()); if (null == $origSheet) { $sheet->setAccount($this); $fileIds = array(); /** @var Sheet $savedSheet */ foreach ($this->sheets as $savedSheet) { $gid = $savedSheet->getGoogleId(); if (!isset($fileIds[$gid])) { $fileIds[$gid] = $savedSheet->getFileId(); } } $nextFileId = 0; if (!empty($fileIds)) { if (isset($fileIds[$sheet->getGoogleId()])) { $nextFileId = $fileIds[$sheet->getGoogleId()]; } else { $nextFileId = max($fileIds) + 1; } } $tableName = $nextFileId . '-' . $this->removeSpecialChars($sheet->getSheetTitle()); $sheet->setFileId($nextFileId); if ($sheet->getConfig() == null) { $sheet->setConfig(array('header' => array('rows' => 1), 'db' => array('table' => $this->getInBucketId() . '.' . $tableName))); } } else { // Update Sheet $this->removeSheet($origSheet->getFileId(), $origSheet->getSheetId()); $origSheet->fromArray($sheet->toArray()); $sheet = $origSheet; } $this->sheets[] = $sheet; }