我正在使用laravel构建一个演示项目,该项目应使用数据库中的数据创建,格式化和填充工作表。
我不需要持久化工作表,因为我只需要工作表接口主要用于数据输入,因为行可能会成百上千,并且需要即时计算和公式。
一旦用户在行中输入了值,数据将被我的应用程序吸收并存储在数据库中。
这就是为什么我的应用程序的理想设置是服务器到服务器。我已经在开发者控制台上创建了一个服务帐户,该代码可以很好地工作并创建工作表。
public function __construct()
{
/*
* Prepare to make api calls
* Get a Google_Client object first to handle auth and api calls, etc.
* The environment variable is used to access the auth file via useApplicationDefaultCredentials
*/
$this->client = new \Google_Client();
$this->client->useApplicationDefaultCredentials();
$this->client->setApplicationName("media-demo");
// set the scopes
$this->client->setScopes(['https://www.googleapis.com/auth/spreadsheets']);
// $this->client->setAccessType('offline');
/*
* Use the authorized Google client to call the Google APIs
* Build the service object here
*/
$this->sheets = new \Google_Service_Sheets($this->client);
/*
* Work around for curl error 60
*/
$curlHttp = new \GuzzleHttp\Client(['verify' => 'C:\phpweb\cacert.pem']);
$this->client->setHttpClient($curlHttp);
}
那是我创建客户端的构造方法,这是我使用 Google_Service_Sheets_Spreadsheet()创建电子表格时得到的示例响应:
Google_Service_Sheets_Spreadsheet {
collection_key: "sheets"
developerMetadataType: "Google_Service_Sheets_DeveloperMetadata"
developerMetadataDataType: "array"
namedRangesType: "Google_Service_Sheets_NamedRange"
namedRangesDataType: "array"
propertiesType: "Google_Service_Sheets_SpreadsheetProperties"
propertiesDataType: ""
sheetsType: "Google_Service_Sheets_Sheet"
sheetsDataType: "array"
+spreadsheetId: "1da6OWxxx8dn2cDOduDTFTZUvFpyeYidjFq5nmz3Sr4E"
+spreadsheetUrl: "https://docs.google.com/spreadsheets/d/1da6OWxxx8dn2cDOduDTFTZUvFpyeYidjFq5nmz3Sr4E/edit"
}
根据响应,创建工作表。但是,这是在链接出现在浏览器中复制和粘贴链接的问题: You need permission
用户无法访问创建的工作表。我该如何进行这项工作?