2017-07-31 1 views
2

Je souhaite ajouter de nouvelles données au début (début) de la feuille. Je dois donc ajouter une nouvelle colonne A1 à la feuille. Mais je ne trouve aucun exemple d'API avec PHP.Comment insérer une colonne dans la feuille de calcul Google?

Maintenant, j'apposent les données avec ceci:

$body = new Google_Service_Sheets_ValueRange(['values' => $values]); 
$result = $service->spreadsheets_values->append($new_sheet_id, 'A1:E1', $body, $options); // appent the data to the spreadsheet 

Merci.

UPD: voici ce que j'ai trouvé

/* insert columns */ 
$requests = new Google_Service_Sheets_Request(array(
    'insertDimension' => array(
     'range' => array(
      'sheetId' => 0, 
      'dimension' => "COLUMNS", 
      'startIndex' => 0, 
      'endIndex' => 5 
     ) 
    ) 
)); 
$batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
    'requests' => $requests 
)); 
$result = $service->spreadsheets->batchUpdate($new_sheet_id, $batchUpdateRequest); 
/* insert columns */ 

Répondre

0

Je crois qu'il est impossible avec l'API de feuille de calcul. J'ai étudié la possibilité et jusqu'ici je ne peux pas voir comment faire cela. Il existe une autre solution, mais vous devez utiliser le Google Apps Script Execution API. N'hésitez pas à mettre en œuvre si la solution est appropriée. Procédez comme suit:

  1. Créez une nouvelle feuille de calcul et nommez-la comme vous le souhaitez.
  2. Remplissez la feuille de calcul il semble même que l'image ci-dessous enter image description here
  3. Ouvrez l'éditeur de script en allant dans « Outils> Script Editor »
  4. Nommez le projet que vous voulez que vous voyez dans l'image ci-dessous enter image description here
  5. Supprimer everyting vous avez à l'intérieur "Code.gs" ​​et coller les éléments suivants:

    function insertColumn(vals) { 
    
        var ss = SpreadsheetApp.getActiveSpreadsheet(); 
        var sheet = ss.getSheets()[0]; 
    
        // This inserts a column in the first column position 
        sheet.insertColumnBefore(1); 
    
        //This set the values in the cells of the first column inserted 
        var range = sheet.getRange("A1:A5"); 
        range.setValues(vals); 
    
    } 
    
  6. maintenant, allez à l'homme de l'API Ager, sélectionnez votre projet et activer l'API, comme dans l'image ci-dessous enter image description here

  7. Accédez à vos paramètres du projet et copier le numéro de projet , comme dans l'image ci-dessous enter image description here

  8. Retour à la Cliquez sur "Ressources> Projet Cloud Platform".

  9. Collez le numéro de projet dans le champ "Entrez le numéro de projet ici", puis cliquez sur "Définir le projet". Voir l'image ci-dessous. enter image description here

  10. Vous obtiendrez une fenêtre de confirmation. Confirmez le changement et attendez qu'il se termine.

  11. Dans l'éditeur de projet, allez dans "Publier> Déployer en tant qu'exécutable API". Tapez une version et cliquez sur "Déployer". Voir image ci-dessous enter image description here

  12. Il vous montrera quelques plus de messages d'information et vous devriez voir ceci: enter image description here

  13. S'il vous plaît copiez le API actuel ID et assurez-vous de sauver le projet changements.

  14. Créer un nouveau fichier PHP et collez le texte suivant:

    <?php session_start(); 
    
    //INCLUDE PHP CLIENT LIBRARY 
    require_once 'vendor/autoload.php'; 
    
    //scope required to modify the spreadsheet 
    $scopes = array("https://www.googleapis.com/auth/spreadsheets"); 
    
    // Create client object 
    $client = new Google_Client(); 
    $client->setRedirectUri('http://'.$_SERVER['HTTP_HOST'].'/index.php'); 
    $client->setAuthConfig("client_secret.json"); 
    $client->setScopes($scopes); 
    
    if(isset($_SESSION["access_token"]) && ($_SESSION["access_token"])) { 
    
        $client->setAccessToken($_SESSION["access_token"]);  
        $service = new Google_Service_Script($client); 
    
        //Here goes the script Id you copied on step 13 
        $scriptId = 'XXX-OROcbUXO78URUxxxLYqFdOk6teXXX'; 
    
        $values = array( 
         array("Email"), 
         array("[email protected]"), 
         array("[email protected]"), 
         array("[email protected]"), 
         array("[email protected]") 
        ); 
    
        $params = array($values); 
    
        // Create an execution request object. 
        $request = new Google_Service_Script_ExecutionRequest(); 
        $request->setFunction('insertColumn'); 
        $request->setParameters($params); 
        $request->setDevMode(true); //required to work with parameters 
    
        try { 
        // Make the API request. 
         $response = $service->scripts->run($scriptId, $request); 
    
         if ($response->getError()) { 
         // The API executed, but the script returned an error. 
    
         // Extract the first (and only) set of error details. 
         // The values of this object are the script's 'errorMessage' 
         // and 'errorType', and an array of stack trace elements. 
         $error = $response->getError()['details'][0]; 
         printf("Script error message: %s\n", $error['errorMessage']); 
    
          if (array_key_exists('scriptStackTraceElements', $error)) { 
           // There may not be a stacktrace if the script didn't start executing. 
           print "Script error stacktrace:\n"; 
           foreach($error['scriptStackTraceElements'] as $trace) { 
            printf("\t%s: %d\n", $trace['function'], $trace['lineNumber']); 
           } 
          } 
    
         } else { 
         // The structure of the result will depend upon what the Apps Script 
         // function returns. 
         $resp = $response->getResponse();  
         var_dump($resp);   
    
         } 
        } catch (Exception $e) { 
         // The API encountered a problem before the script started executing. 
         echo 'Caught exception: ', $e->getMessage(), "\n"; 
        }  
    
    } else { 
    
        if(!isset($_GET["code"])){ 
    
         $authUrl = $client->createAuthUrl(); 
         header('Location: ' . filter_var($authUrl, FILTER_SANITIZE_URL)); 
    
        } else { 
    
         $client->authenticate($_GET['code']); 
         $_SESSION['access_token'] = $client->getAccessToken(); 
    
         $redirect_uri = 'http://'.$_SERVER['HTTP_HOST'] .'/index.php'; 
         header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); 
    
        } 
    
    } 
    
    ?> 
    
  15. exécuter le script PHP, puis regarder le résultat dans votre Spreadhsheet. Vous devriez voir comme ci-dessous. enter image description here

Comme vous pouvez le voir, une colonne a été insérée au début et les valeurs ont été remplies trop. J'espère que cela sera utile à vous ou à quelqu'un d'autre.