{"id":25246,"date":"2021-05-28T17:03:00","date_gmt":"2021-05-28T14:03:00","guid":{"rendered":"https:\/\/themewp.inform.click\/?p=25246"},"modified":"2021-10-18T03:09:42","modified_gmt":"2021-10-18T00:09:42","slug":"come-integrare-l-api-di-fogli-google-con-php","status":"publish","type":"post","link":"https:\/\/themewp.inform.click\/it\/come-integrare-l-api-di-fogli-google-con-php\/","title":{"rendered":"Come integrare l&#8217;API di Fogli Google con PHP"},"content":{"rendered":"<p>In passato, ho lavorato a un progetto in cui volevamo scrivere dati in modo dinamico su Google Spreadsheet. Per raggiungere questo obiettivo, abbiamo interagito con l&#8217;API di Fogli. L&#8217;ho trovato un argomento interessante per il post del blog. Quindi, in questo articolo, studiamo come integrare l&#8217;API di Fogli Google utilizzando PHP. Eseguiremo operazioni di creazione, scrittura, aggiunta e lettura su fogli di calcolo tramite l&#8217;API.<\/p>\n<p>Google Spreadsheet \u00e8 una suite per ufficio software gratuita basata sul Web gestita da Google. \u00c8 possibile utilizzare il foglio di calcolo per i propri scopi all&#8217;interno del servizio Google Drive.<\/p>\n<p>Quando si tratta di siti Web, puoi utilizzare i fogli di Google per vari scopi. \u00c8 possibile memorizzare le informazioni di contatto dell&#8217;utente (telefono ed e-mail), i dettagli di pagamento, le registrazioni agli eventi, le attivit\u00e0 e molto altro nel foglio di Google. Sul sito Web, potresti volere un sistema automatizzato che esegua tutte le operazioni di lettura e scrittura su fogli di calcolo quando si attiva un&#8217;azione specifica. Pu\u00f2 essere fatto tramite l&#8217; <a href=\"https:\/\/developers.google.com\/sheets\/api\/quickstart\/php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">API Fogli<\/a>.<\/p>\n<h3>Registra un&#8217;applicazione e crea credenziali<\/h3>\n<p>User\u00f2 OAuth per interagire con l&#8217;API. OAuth \u00e8 un modo pi\u00f9 sicuro e consigliato di eseguire operazioni API. Segui i passaggi seguenti necessari per l&#8217;integrazione di OAuth.<\/p>\n<ul>\n<li>Vai alla Console per gli sviluppatori di Google <a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external\"><\/a><a href=\"https:\/\/console.developers.google.com\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">https:\/\/console.developers.google.com<\/a><\/li>\n<li>Crea un nuovo progetto. In alternativa, puoi anche selezionare un progetto esistente.<\/li>\n<li>Dai un nome al tuo progetto. Google Console generer\u00e0 un ID progetto univoco per esso.<\/li>\n<li>Il tuo progetto apparir\u00e0 in cima alla barra laterale sinistra.<\/li>\n<li>Fare clic su Libreria. Vedrai l&#8217;elenco delle API di Google.<\/li>\n<li>Abilita l&#8217;API di Fogli Google.<\/li>\n<li>Fare clic su Credenziali. Seleziona ID client Oauth in Crea credenziali. Scegli il pulsante di opzione per l&#8217;applicazione Web.<\/li>\n<li>Dai il nome. In Origini JavaScript autorizzate inserisci l&#8217;URL del tuo dominio. Negli URI di reindirizzamento autorizzati aggiungere il collegamento dell&#8217;URL di reindirizzamento. Nel mio caso ho passato l&#8217;URL <a href=\"http:\/\/localhost\/google-sheets-api\/callback.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">http:\/\/localhost\/google-sheets-api\/callback.php<\/a><\/li>\n<li>Fare clic sul pulsante Crea. Otterrai l&#8217;ID cliente e il segreto del cliente nel pop-up. Copia questi dettagli. Ne avremo bisogno in un momento.<\/li>\n<\/ul>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20437-6081f16b554eb.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20437-6081f16b554eb.png\" alt=\"Come integrare l&#039;API di Fogli Google con PHP\" ><\/a><\/p>\n<h3>Configurazione di base<\/h3>\n<p>Come detto, utilizzeremo OAuth per eseguire le operazioni API. Richiede di generare un token di accesso che funge da identificatore per il tuo account. Utilizzando questo token di accesso, le API di Google convalidano se la richiesta in arrivo \u00e8 valida e autorizzata.<\/p>\n<p>Il token di accesso ha una vita breve. Scadono presto. E una volta scaduto, non possiamo effettuare chiamate API poich\u00e9 Google considera la richiesta con il token scaduto come una richiesta non autorizzata. Per risolvere questo problema, utilizziamo &quot;refresh_token&quot; per rigenerare il token di accesso in background. Ecco come funziona OAuth.<\/p>\n<p>Iniziamo a creare il flusso OAuth. Crea il <code>composer.json<\/code>file e aggiungi le righe sottostanti.<\/p>\n<pre><code>{\n\u00a0\u00a0\u00a0\u00a0\"require\": {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"google\/apiclient\": \"2.0\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"hybridauth\/hybridauth\": \"~3.0\"\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Quindi, esegui il comando seguente per l&#8217;installazione di queste librerie.<\/p>\n<pre><code>composer install<\/code><\/pre>\n<p>Quando generiamo il token di accesso, deve essere archiviato in un database. Memorizzandolo, puoi recuperare un token in qualsiasi momento ed eseguire le chiamate API. Esegui la query seguente per creare una tabella nel database.<\/p>\n<pre><code>CREATE TABLE `token` (\u00a0`id` int(11) NOT NULL AUTO_INCREMENT,\n\u00a0`access_token` text NOT NULL,\n\u00a0PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;<\/code><\/pre>\n<p>Ora, crea una classe DB che interagir\u00e0 con il database e recuperer\u00e0, memorizzer\u00e0, aggiorner\u00e0 le informazioni sui token nella tabella.<\/p>\n<p><strong>class-db.php<\/strong><\/p>\n<pre><code>&lt;?php\nclass DB {\n\u00a0\u00a0\u00a0\u00a0private $dbHost\u00a0\u00a0\u00a0\u00a0 = \"DB_HOST\";\n\u00a0\u00a0\u00a0\u00a0private $dbUsername = \"DB_USERNAME\";\n\u00a0\u00a0\u00a0\u00a0private $dbPassword = \"DB_PASSWORD\";\n\u00a0\u00a0\u00a0\u00a0private $dbName\u00a0\u00a0\u00a0\u00a0 = \"DB_NAME\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function __construct(){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if(!isset($this-&gt;db)){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Connect to the database\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$conn = new mysqli($this-&gt;dbHost, $this-&gt;dbUsername, $this-&gt;dbPassword, $this-&gt;dbName);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($conn-&gt;connect_error){\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0die(\"Failed to connect with MySQL: \". $conn-&gt;connect_error);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}else{\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db = $conn;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function is_table_empty() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;db-&gt;query(\"SELECT id FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($result-&gt;num_rows) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return false;\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return true;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_access_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$sql = $this-&gt;db-&gt;query(\"SELECT access_token FROM token\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $sql-&gt;fetch_assoc();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return json_decode($result['access_token']);\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function get_refersh_token() {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $this-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0return $result-&gt;refresh_token;\n\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0public function update_access_token($token) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if($this-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"INSERT INTO token(access_token) VALUES('$token')\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$this-&gt;db-&gt;query(\"UPDATE token SET access_token = '$token' WHERE id = (SELECT id FROM token)\");\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Sostituisci i segnaposto nel codice sopra con le tue credenziali di database effettive. Qui presumo che tu voglia utilizzare un singolo account Google. Se intendi utilizzare pi\u00f9 account, modifica le query in base alle tue esigenze.<\/p>\n<h3>Genera token di accesso<\/h3>\n<p>Abbiamo finito con la creazione di una tabella e l&#8217;installazione delle librerie. La prossima cosa da fare \u00e8 autorizzare l&#8217;account Google e memorizzare il token di accesso nella tabella &quot;token&quot;.<\/p>\n<p>Crea un <code>config.php<\/code>file e scrivi una configurazione secondo le linee guida della libreria HybridAuth.<\/p>\n<p><strong>config.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'vendor\/autoload.php';\nrequire_once 'class-db.php';\n\u00a0\u00a0\ndefine('GOOGLE_CLIENT_ID', 'PASTE_CLIENT_ID_HERE');\ndefine('GOOGLE_CLIENT_SECRET', 'PASTE_CLIENT_SECRET_HERE');\n\u00a0\u00a0\n$config = [\n\u00a0\u00a0\u00a0\u00a0'callback' =&gt; 'YOUR_DOMAIN_URL\/callback.php',\n\u00a0\u00a0\u00a0\u00a0'keys'\u00a0\u00a0\u00a0\u00a0 =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'id' =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'secret' =&gt; GOOGLE_CLIENT_SECRET\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0'scope'\u00a0\u00a0\u00a0 =&gt; 'https:\/\/www.googleapis.com\/auth\/spreadsheets',\n\u00a0\u00a0\u00a0\u00a0'authorize_url_parameters' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'approval_prompt' =&gt; 'force', \/\/ to pass only when you need to acquire a new refresh token.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_type' =&gt; 'offline'\n\u00a0\u00a0\u00a0\u00a0]\n];\n\u00a0\u00a0\n$adapter = new HybridauthProviderGoogle( $config );<\/code><\/pre>\n<p>Assicurati di definire i valori delle costanti GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET. Inoltre, passa l&#8217;URL di richiamata nel codice sopra. Quando l&#8217;utente completa l&#8217;autorizzazione, reindirizzer\u00e0 all&#8217;URL di richiamata.<\/p>\n<p>Utilizzando <code>callback.php<\/code>file, recupereremo i dettagli del token di accesso e li memorizzeremo nel database come segue.<\/p>\n<p><strong>callback.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\u00a0\ntry {\n\u00a0\u00a0\u00a0\u00a0$adapter-&gt;authenticate();\n\u00a0\u00a0\u00a0\u00a0$token = $adapter-&gt;getAccessToken();\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\u00a0\u00a0if($db-&gt;is_table_empty()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($token));\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo \"Access token inserted successfully.\";\n\u00a0\u00a0\u00a0\u00a0}\n}\ncatch( Exception $e ){\n\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage() ;\n}<\/code><\/pre>\n<p>A questo punto, vai al browser ed esegui YOUR_DOMAIN_URL\/callback.php, ti reindirizzer\u00e0 all&#8217;account Google. Completa il processo di autorizzazione. Dopo aver completato il processo, controlla la tabella &#8216;token&#8217;. Dovrebbe aver memorizzato le informazioni sul token.<\/p>\n<h3>Crea un foglio di calcolo utilizzando l&#8217;API di Fogli e PHP<\/h3>\n<p>Ora hai memorizzato il token di accesso nella tua tabella. Significa che puoi procedere con le ulteriori operazioni sui fogli Google del tuo account. Iniziamo prima con la creazione del foglio di calcolo utilizzando l&#8217;API Fogli.<\/p>\n<p><strong>create-sheet.php<\/strong><\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\ncreate_spreadsheet();\n\u00a0\nfunction create_spreadsheet() {\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_Sheets($client);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$spreadsheet = new Google_Service_Sheets_Spreadsheet([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'properties' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'title' =&gt; 'API Sheet'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$spreadsheet = $service-&gt;spreadsheets-&gt;create($spreadsheet, [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'fields' =&gt; 'spreadsheetId'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(\"Spreadsheet ID: %sn\", $spreadsheet-&gt;spreadsheetId);\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/accounts.google.com']);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0create_spreadsheet();\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Questo codice ottiene prima i dettagli del token dal DB. Usando questo token chiama il servizio di fogli di Google e crea un foglio di calcolo. Ho stampato l&#8217;ID di un foglio di calcolo creato.<\/p>\n<p>Se un token di accesso \u00e8 scaduto, il codice va al blocco catch. Nel blocco catch, rigenera il token di accesso, lo aggiorna nel database e continua l&#8217;operazione API.<\/p>\n<p>Lo stesso codice con piccole modifiche verr\u00e0 utilizzato per altre operazioni sui fogli di calcolo.<\/p>\n<h4>Scrivi dati su un foglio di calcolo<\/h4>\n<p>Per eseguire le operazioni di scrittura, \u00e8 necessario passare un intervallo di celle da scrivere. Ad esempio, vuoi aggiungere le intestazioni Nome ed E-mail in alto. In tal caso, il tuo intervallo diventa &quot;A1:B1&quot;. Significa che scriveremo le intestazioni Nome ed Email rispettivamente nelle celle A1 e B1.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\nwrite_to_sheet('SPREADSHEET_ID');\n\u00a0\nfunction write_to_sheet($spreadsheetId = '') {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_Sheets($client);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$range = 'A1:B1';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$values = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Name',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Email',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$body = new Google_Service_Sheets_ValueRange([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'values' =&gt; $values\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$params = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'valueInputOption' =&gt; 'USER_ENTERED'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $service-&gt;spreadsheets_values-&gt;update($spreadsheetId, $range, $body, $params);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(\"%d cells updated.\", $result-&gt;getUpdatedCells());\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/accounts.google.com']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0write_to_sheet($spreadsheetId);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Qui, ho passato l&#8217;ID del foglio di calcolo al metodo. \u00c8 possibile modificare questa funzione e passare parametri aggiuntivi. Nel codice precedente, abbiamo restituito l&#8217;ID del foglio di calcolo che pu\u00f2 essere utilizzato nel codice precedente. In alternativa, puoi ottenere l&#8217;ID del foglio di lavoro dall&#8217;URL del tuo foglio. Guarda lo screenshot qui sotto.<\/p>\n<p><a href=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20437-6081f16b554eb.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/themewp.inform.click\/wp-content\/uploads\/2021\/04\/post-20437-6081f16b554eb.png\" alt=\"Come integrare l&#039;API di Fogli Google con PHP\" ><\/a><\/p>\n<p>La stringa che compare tra &quot;d&quot; e &quot;edit&quot; \u00e8 l&#8217;ID di un foglio di lavoro di Google.<\/p>\n<h4>Aggiungi dati a un foglio Google<\/h4>\n<p>Se stai cercando di memorizzare informazioni specifiche nel foglio di Google, devi aggiungerle al foglio di calcolo esistente. Potrebbero esserci casi in cui desideri aggiungere una o pi\u00f9 righe in una volta sola. L&#8217;utente pu\u00f2 passare gli elementi dell&#8217;array singoli o multipli e aggiungere dati al foglio come mostrato di seguito.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\nappend_to_sheet('SPREADSHEET_ID');\n\u00a0\u00a0\nfunction append_to_sheet($spreadsheetId = '') {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_Sheets($client);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$range = 'A1:B1';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$values = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'John Doe',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'john@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0[\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'Jack Waugh',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'jack@test.com',\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Additional rows ...\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$body = new Google_Service_Sheets_ValueRange([\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'values' =&gt; $values\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$params = [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'valueInputOption' =&gt; 'USER_ENTERED'\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0];\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$result = $service-&gt;spreadsheets_values-&gt;append($spreadsheetId, $range, $body, $params);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(\"%d cells appended.\", $result-&gt;getUpdates()-&gt;getUpdatedCells());\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/accounts.google.com']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0append_to_sheet($spreadsheetId);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Ho usato l&#8217;intervallo &quot;A1: B1&quot; e ho passato 2 elementi di array separati. L&#8217;API di Fogli aggiunge questi dettagli dopo i dati della tabella. Tieni presente che anche se stiamo passando &quot;A1: B1&quot; nell&#8217;intervallo, non sostituir\u00e0 i valori gi\u00e0 scritti in queste celle. Invece, scrive i dati nelle successive celle disponibili.<\/p>\n<h4>Leggi i dati da un foglio Google<\/h4>\n<p>Abbiamo scritto un codice per creare un foglio di calcolo, scrivere su un foglio di calcolo e aggiungere dati al foglio di calcolo. Infine, vediamo come leggere i dati da un foglio Google.<\/p>\n<pre><code>&lt;?php\nrequire_once 'config.php';\n\u00a0\nread_sheet('SPREADSHEET_ID');\n\u00a0\u00a0\nfunction read_sheet($spreadsheetId = '') {\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client = new Google_Client();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$db = new DB();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$arr_token = (array) $db-&gt;get_access_token();\n\u00a0\u00a0\u00a0\u00a0$accessToken = array(\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'access_token' =&gt; $arr_token['access_token'],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'expires_in' =&gt; $arr_token['expires_in'],\n\u00a0\u00a0\u00a0\u00a0);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$client-&gt;setAccessToken($accessToken);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0$service = new Google_Service_Sheets($client);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0try {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$range = 'A:B';\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $service-&gt;spreadsheets_values-&gt;get($spreadsheetId, $range);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$values = $response-&gt;getValues();\n\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if (empty($values)) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print \"No data found.n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0print \"Name, Email:n\";\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0foreach ($values as $row) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\/\/ Print columns A and E, which correspond to indices 0 and 4.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0printf(\"%s, %sn\", $row[0], $row[1]);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0} catch(Exception $e) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0if( 401 == $e-&gt;getCode()) {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$refresh_token = $db-&gt;get_refersh_token();\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$client = new GuzzleHttpClient(['base_uri' =&gt; 'https:\/\/accounts.google.com']);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$response = $client-&gt;request('POST', '\/o\/oauth2\/token', [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0'form_params' =&gt; [\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"grant_type\" =&gt; \"refresh_token\",\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"refresh_token\" =&gt; $refresh_token,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_id\" =&gt; GOOGLE_CLIENT_ID,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\"client_secret\" =&gt; GOOGLE_CLIENT_SECRET,\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0],\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0]);\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data = (array) json_decode($response-&gt;getBody());\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$data['refresh_token'] = $refresh_token;\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0$db-&gt;update_access_token(json_encode($data));\n\u00a0\u00a0\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0read_sheet($spreadsheetId);\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0} else {\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0echo $e-&gt;getMessage(); \/\/print the error just in case your video is not uploaded.\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0}\n\u00a0\u00a0\u00a0\u00a0}\n}<\/code><\/pre>\n<p>Spero che tu capisca come integrare l&#8217;API di Fogli Google utilizzando PHP. Mi piacerebbe sentire i tuoi pensieri e suggerimenti nella sezione commenti qui sotto.<\/p>\n<h4>articoli Correlati<\/h4>\n<ul>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-utilizzare-l-api-di-youtube-per-caricare-video-sul-canale-youtube\/\" title=\"Come utilizzare l&#039;API di YouTube per caricare video sul canale YouTube\">Come utilizzare l&#8217;API di YouTube per caricare video sul canale YouTube<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-aggiungere-l-accesso-oauth-a-google-nel-sito-web-con-php\/\" title=\"Come aggiungere l&#039;accesso OAuth a Google nel sito Web con PHP\">Come aggiungere l&#8217;accesso OAuth a Google nel sito Web con PHP<\/a><\/li>\n<li><a href=\"https:\/\/themewp.inform.click\/it\/come-creare-una-riunione-su-zoom-utilizzando-zoom-api-e-php\/\" title=\"Come creare una riunione su Zoom utilizzando Zoom API e PHP\">Come creare una riunione su Zoom utilizzando Zoom API e PHP<\/a><\/li>\n<\/ul>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/artisansweb.net\" class=\"external external_icon\">artisansweb.net<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Vuoi integrare l&#8217;API dei fogli di Google nel sito web? In questo tutorial, studiamo come eseguire creare, scrivere, aggiungere e leggere<\/p>\n","protected":false},"author":1,"featured_media":21675,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[276],"tags":[846],"class_list":["post-25246","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-php-7","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25246","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/comments?post=25246"}],"version-history":[{"count":0,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/posts\/25246\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media\/21675"}],"wp:attachment":[{"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/media?parent=25246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/categories?post=25246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/themewp.inform.click\/it\/wp-json\/wp\/v2\/tags?post=25246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}