2016-09-29 4 views
0

Durch diesen Code habe ich eine Reihe von Zeilen in Google Spreadsheet aktualisieren. Die Anfrage geht gut und gibt mir die updatedRange unten.Google Tabellen API - Formatierung von eingefügten Werten

result = service.spreadsheets().values().append(
    spreadsheetId=spreadsheetId, 
    range=rangeName, 
    valueInputOption="RAW", 
    insertDataOption="INSERT_ROWS", 
    body=body 
).execute() 
print(result) 
print("Range updated") 
updateRange = result['updates']['updatedRange'] 

Nun würde Ich mag eine batchUpdate Anfrage tun, um die Formatierung oder stellen Sie einen geschützten Bereich zu setzen, aber die API erfordert eine Reihe angegeben als startRowIndex, endRowIndex und so weiter. Wie kann ich den Zeilenindex von updatedRange abrufen?

+0

Ich bin nicht sicher, ob es eine Möglichkeit gibt, Zeilen-/Spaltenindizes aus dem 'updatedRange' abzurufen. Was ich vorschlagen kann, ist eine Funktion zu erstellen, die die Zeilen und Spalten basierend auf dem 'updatedRange' Wert zählt. Wie im Dokument [Aktualisierung der Tabellen] (https://developers.google.com/sheets/guides/batchupdate) angegeben, gibt es verschiedene Möglichkeiten, um das gleiche Ergebnis zu erzielen. Wenn Sie jedoch der Meinung sind, dass diese Funktion hilfreich ist, versuchen Sie es [hier] (https://code.google.com/a/google.com/p/apps-api-issues/issues/entry?template=Feature%). 20request & labels = Type-Enhancement, API-Tasks). –

Antwort

0

Warten auf eine native oder bessere Antwort, werde ich eine Funktion, die ich erstellt habe, um eine namedRange in eine gridRange zu übersetzen. Die Funktion bei weitem nicht perfekt und nicht übersetzen die Blattnamen auf ein Blatt-ID (links ich diese Aufgabe an eine andere spezifische Funktion), sondern benannte Bereiche in Form annehmen:

  • sheet!A:B
  • sheet!A1:B
  • sheet!A:B5
  • sheet!A1:B5

Hier ist der Code

import re 

    def namedRange2Grid(self, rangeName): 
     ascii_uppercase = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 
     match = re.match(".*?\!([A-Z0-9]+)\:([A-Z0-9]+)", rangeName) 
     if match: 
      start = match.group(1) 
      end = match.group(2) 
      matchStart = re.match("([A-Z]{1,})([1-9]+){0,}", start) 
      matchEnd = re.match("([A-Z]{1,})([1-9]+){0,}", end) 
      if matchStart and matchEnd: 
       GridRange = {} 
       letterStart = matchStart.group(1) 
       letterEnd = matchEnd.group(1) 
       if matchStart.group(2): 
        numberStart = int(matchStart.group(2)) 
        GridRange['startRowIndex'] = numberStart - 1 
       if matchEnd.group(2): 
        numberEnd = int(matchEnd.group(2)) 
        GridRange['endRowIndex'] = numberEnd 

       i = 0 
       for l in range(0, len(letterStart)): 
        i = i + (l * len(ascii_uppercase)) 
        i = i + ascii_uppercase.index(letterStart[l]) 
       GridRange['startColumnIndex'] = i 

       i = 0 
       for l in range(0, len(letterEnd)): 
        i = i + (l * len(ascii_uppercase)) 
        i = i + ascii_uppercase.index(letterEnd[l]) 
       GridRange['endColumnIndex'] = i + 1 

       return GridRange 
Verwandte Themen