Данные PygsHeets, записанные в GSHET с формульными символами, принимают данные как формулы - PullRequest
1 голос
/ 05 апреля 2019

При записи данных в таблицы с таблицами Pygsheets - одно из моих значений содержит символ +.Например, +myvalue

При экспорте данных вместо значения фона я получаю вывод #NAME?. #NAME?, конечно, строка формулы содержит правильное значение.+myvalue

Однако это не совсем неожиданно - если использовать метод листов и вручную импортировать CSV, содержащий эти значения - ошибка #NAME? не отображается, и вместо этого я могуувидеть + myvalue в поле.(Если я не редактирую его.)

Это мой код для "импорта" CSV - конечно, он просто читает значения CSV и загружает:

# Authorise with GSheets Service Account
gc = pygsheets.authorize(service_file=service_account_file)

# Open spreadsheet
sh = gc.open_by_key(spreadsheet_key)

# Open Worksheet
#wks = sh.add_worksheet(spreadsheet_hosts_worksheet) # Create Worksheet
wks = sh.worksheet_by_title(worksheet_name)

# Generate list "data" with Values from CSV
with open(inputFile, 'r') as f:
  #reader = csv.reader(f, skipinitialspace=True, delimiter=',', quotechar='"')
  reader = csv.reader(f, delimiter=',', quotechar='"')
  data = list(reader)

# Empty Worksheet
wks.clear()

# Append Values
wks.update_values(crange='A1', values=data)

# Freeze Top Row
wks.frozen_rows=1

Могу ли я изменить метод обновления, так что он принимает формулы как текст - точно так же, как функция CSV import на GSheets будет?

Мои образцы данных:

['host_name', 'alias', 'address', 'parents', 'use', 'display_name', 'hostgroups', 'contacts', '_ADDINFO', '_SNOWGROUP', '_RTTCRIT', '_RTTWARN', 'contact_groups', 'notes', 'notes_url', 'check_command', 'first_notification_delay', 'check_interval', 'max_check_attempts', 'retry_interval', 'config_filename']
['host', 'destiny islands', '1.1.1.1', 'host.mypalace.com,host.mapalace2.com', 'tmpl_network_device', 'Gingerbread lane', 'hgrp_grandad', '+myvalue', 'ACTION - Don't forget to smile', 'test', '70', '20', '', '', '', '', '', '', '', '', '/folder/filename']

1 Ответ

1 голос
/ 06 апреля 2019

Как насчет использования parse=False?

Когда я увидел скрипт , по умолчанию это parse=True.В этом случае valueInputOption использует USER_ENTERED.Когда используется parse=False, valueInputOption использует RAW.Таким образом, +myvalue не #NAME?.

Модифицированный скрипт:

wks.update_values(crange='A1', values=[['+myvalue']])  # ---> #NAME? is put in a cell "A1"

wks.update_values(crange='A2', values=[['+myvalue']], parse=False)  # ---> +myvalue is put in a cell "A2"

Ссылки:

...