1

Ich bin verwirrt über das neue Google Tabellen-API v4. Meine Frage ist: Wie kann ich Validierungsregeln für die angegebene (n) Spalte (n) in der Tabelle festlegen? Es gibt kein nützliches Tutorial mit einer Beschreibung, wie man geeignete Methoden verwendet.So legen Sie die Validierungsmethode in der Google-Tabellen-API fest

Ergebnis soll wie folgendes Beispiel aussehen:

, dass die Validierung vor Daten-Upload eingestellt werden soll (was gut funktioniert).

Mein aktueller Code:

$client = getClient(); 
$service = new Google_Service_Sheets($client); 
$fileId = 'my-document-id'; 

$body = new Google_Service_Sheets_SetDataValidationRequest(array(
    'setRange' => new Google_Service_Sheets_GridRange(
     array(
      'sheetId'=>'List1', 
      'startColumnIndex'=>'0', 
      'endColumnIndex'=>'1' 
     ) 
    ), 
    'setRule' => new Google_Service_Sheets_DataValidationRule(
     array(

      'setValues'=>array('YES','NO') 
     ) 
    ) 
)); 


$sheetReq = new Google_Service_Sheets_Request($client); 
$sheetReq->setSetDataValidation($body); 


$batchUpdateRequest = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(array(
    'requests' => $sheetReq 
)); 


$result = $service->spreadsheets->batchUpdate($fileId, $batchUpdateRequest); 

Antwort

2

Danke sein @ random-parts um Hilfe, es hat mich auf den richtigen Weg gebracht. Wenn jemand anderes versuchen wird, ein ähnliches Problem in PHP in Feature zu lösen, finden Sie bitte unten voll funktionsfähig Beispiel:

$client = $this->getClient(); 
    $service = new Google_Service_Sheets($client); 
    $ary_values = ['yes','nope','maybe','never ever']; 

    foreach($ary_values AS $d) { 
     $cellData = new Google_Service_Sheets_ConditionValue(); 
     $cellData->setUserEnteredValue($d); 
     $values[] = $cellData; 
    } 

    $conditions = new Google_Service_Sheets_BooleanCondition(); 
    $conditions->setType('ONE_OF_LIST'); 
    $conditions->setValues($values); 

    $setRule= new Google_Service_Sheets_DataValidationRule(); 
    $setRule->setCondition($conditions); 
    $setRule->setInputMessage('Please set correct value'); 
    $setRule->setShowCustomUi(true); 

    $range = new Google_Service_Sheets_GridRange(); 
    $range->setStartRowIndex(1); 
    $range->setEndRowIndex(5); 
    $range->setStartColumnIndex(1); 
    $range->setEndColumnIndex(2); 
    $range->setSheetId(YOUR_SHEET_ID); //replace this by your sheet ID 

    $valReq = new Google_Service_Sheets_SetDataValidationRequest(); 
    $valReq->setRule($setRule); 
    $valReq->setRange($range); 

    $sheetReq = new Google_Service_Sheets_Request(); 
    $sheetReq->setSetDataValidation($valReq); 

    $bodyReq = new Google_Service_Sheets_BatchUpdateSpreadsheetRequest(); 
    $bodyReq->setRequests($sheetReq); 

    $result = $service->spreadsheets->batchUpdate($fileId, $bodyReq); 
+0

Können Sie erklären, was jeder dieser Klassen bitte tun? – fungusanthrax

+1

* neue Google_Service_Sheets_BooleanCondition(); - Setzen Sie die Validierung für die Tabellenkalkulationszelle aus Werten, die im Array über * neue Google_Service_Sheets_DataValidationRule() gesammelt werden; - Setzen Sie einen "Hinweis" für die Zelle, die sichtbar ist, bevor der Benutzer auf das Array in Ihrem Blatt klickt * new Google_Service_Sheets_GridRange(); - Bereich für Ihre neue Datenvalidierung festlegen (Spalten, Zeilen) * new Google_Service_Sheets_SetDataValidationRequest(); - Sammeln Validierung und Bereich alle zusammen * neue Google_Service_Sheets_BatchUpdateSpreadsheetRequest(); - Klasse für das Hochladen mehrerer Änderungen an Google API in nur einer Anfrage –

+1

Weitere Informationen zu Klassen im Google API SDK und Beispiele finden Sie unter https://developers.google.com/sheets/api/quickstart/php#step_3_set_up_the_sample –

1

Das DataValidationRule Objekt würde wie folgt aussehen:

"rule": { 
    "condition": { 
    "type": "ONE_OF_LIST", 
    "values": [ 
     { userEnteredValue: "Yes"}, 
     { userEnteredValue: "No"} 
    ], 
    }, 
    "inputMessage": "", 
    "strict": true, 
    "showCustomUi": true, 
} 

Sie verwenden möchten rule.condition.typeONE_OF_LIST und geben Sie dann die rule.condition.values Sie in der Liste. showCustomUi wird in der Dropdown-

Ein vollständiges Beispiel zeigen mit Google-Skript aus dem Sheets Script-Editor apps:

function setDataVal() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 

    var validation = { 
    "setDataValidation": { 
     "range": { 
     "sheetId": sheet.getSheetId(), 
     "startRowIndex": 1, 
     "endRowIndex": 5, 
     "startColumnIndex": 1, 
     "endColumnIndex": 5, 
     }, 
     "rule": { 
     "condition": { 
      "type": "ONE_OF_LIST", 
      "values": [ 
      { userEnteredValue: "Yes"}, 
      { userEnteredValue: "No"} 
      ], 
     }, 
     "inputMessage": "", 
     "strict": true, 
     "showCustomUi": true, 
     } 
    }, 
    } 

    var req = { 
    "requests": [validation], 
    "includeSpreadsheetInResponse": false, 
    } 

    Sheets.Spreadsheets.batchUpdate(req, ss.getId()) 
} 
  • Sheets API erweiterte Service haben enabled
Verwandte Themen