Я считаю, что ваша цель, как показано ниже.
- Вы хотите найти 2 значения, например
192.168.0.1
и Gi0/0.100
, из листа в таблице Google. - 2 значения находятся в столбцах «A» и «B».
- Когда 2 значения, такие как
192.168.0.1
и Gi0/0.100
находятся в одной строке, вы хотите получить значения. - Вы Вы хотите добиться этого, используя gspread с python.
- Вы уже получили и выставили значения для Google Spreadsheet с помощью API Sheets.
Для достижения вашей цели, как насчет этого ответа? ?
Я думаю, что, к сожалению, re.compile(r'(192.168.0.1|Gi0/0.100)')
не может быть использован для достижения вашей цели. Итак, здесь я хотел бы предложить следующие 2 шаблона:
Шаблон 1:
В этом шаблоне поиск значений осуществляется с использованием языка запросов. Токен доступа можно использовать из авторизации для gspread.
Пример сценария:
searchValues = ["192.168.0.1", "Gi0/0.100"] # Please set the search values.
spreadsheet_id = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
client = gspread.authorize(credentials)
ss = client.open_by_key(spreadsheet_id)
ws = ss.worksheet(sheetName)
sheet_id = ws._properties['sheetId']
access_token = client.auth.token_response['access_token']
query = "select * where A='" + \
searchValues[0] + "' and B='" + searchValues[1] + "'"
url = 'https://docs.google.com/spreadsheets/d/' + \
spreadsheet_id + '/gviz/tq?tqx=out:csv&gid=' + \
str(sheet_id) + '&tq=' + urllib.parse.quote(query)
res = requests.get(url, headers={'Authorization': 'Bearer ' + access_token})
ar = [row for row in csv.reader(io.StringIO(res.text), delimiter=',')]
print(ar)
- В этом случае, когда найдены значения поиска,
ar
выполняет поиск строк. Если искомые значения НЕ найдены, длина ar
равна 0
. - В этом случае индекс строки не может быть получен.
Pattern 2:
В этом шаблоне сначала все значения извлекаются из листа, и значения ищутся.
Пример сценария:
searchValues = ["192.168.0.1", "Gi0/0.100"] # Please set the search values.
spreadsheet_id = "###" # Please set the Spreadsheet ID.
sheetName = "Sheet1" # Please set the sheet name.
client = gspread.authorize(credentials)
ss = client.open_by_key(spreadsheet_id)
ws = ss.worksheet(sheetName)
values = ws.get_all_values()
ar = [{"rowIndex": i, "value": e} for i, e in enumerate(
values) if e[0] == searchValues[0] and e[1] == searchValues[1]]
print(ar)
- В этом случае когда искомые значения найдены,
ar
имеет индекс строки и значения искомых строк. Если искомые значения НЕ найдены, длина ar
равна 0
. - В этом случае можно получить индекс строки.
Ссылки: