Python 电子表格API-在电子表格的某些列中包含公式时追加值

Python 电子表格API-在电子表格的某些列中包含公式时追加值,python,google-sheets,google-drive-api,google-sheets-api,Python,Google Sheets,Google Drive Api,Google Sheets Api,我正在使用电子表格api将值附加到表格中,但该表格有一个特殊性,它有一些列带有公式,可以处理我应该在其他列中引入的数据,因此我无法删除这些列,但当我尝试附加值时,该值会附加到未定义公式的末尾,e.i有公式的列使我的代码跳过行,直到没有公式为止,这是我用来附加的一段代码 import os import pickle import os.path import io import shutil from lector_nombre import lectorNombre from Tablas

我正在使用电子表格api将值附加到表格中,但该表格有一个特殊性,它有一些列带有公式,可以处理我应该在其他列中引入的数据,因此我无法删除这些列,但当我尝试附加值时,该值会附加到未定义公式的末尾,e.i有公式的列使我的代码跳过行,直到没有公式为止,这是我用来附加的一段代码

import os
import pickle
import os.path
import io
import shutil

from lector_nombre import lectorNombre
from Tablas import lectorTablas
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
from googleapiclient.http import MediaIoBaseDownload

SCOPES = ['https://www.googleapis.com/auth/drive.file','https://www.googleapis.com/auth/drive','https://www.googleapis.com/auth/spreadsheets']

#SAMPLE_SPREADSHEET_ID = '1BxiMVs0ew23gmUUqptlb23frvfvE2upms'
#SAMPLE_RANGE_NAME = 'Class Data!A2:E'

"""Shows basic usage of the Sheets API.
Prints values from a sample spreadsheet.
"""
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
    with open('token.pickle', 'rb') as token:
        creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
    if creds and creds.expired and creds.refresh_token:
        creds.refresh(Request())
    else:
        flow = InstalledAppFlow.from_client_secrets_file(
            'credentials.json', SCOPES)
        creds = flow.run_local_server(port=0)
    # Save the credentials for the next run
    with open('token.pickle', 'wb') as token:
        pickle.dump(creds, token)

service = build('sheets', 'v4', credentials=creds)

# Call the Sheets API
sheet = service.spreadsheets()

data=[["data","data","data","data","https://google.com"]]
res = sheet.values().append(spreadsheetId="134542fvbvfdfewdvwed4",
                            range="sheet!A1:G1",
                            valueInputOption="USER_ENTERED",
                            insertDataOption="INSERT_ROWS",
                            body={"values":data}).execute()
print(res)

这里有一张我的床单的图片

编辑:

我想我对我的问题不是很清楚,我真正需要的是指定一个范围,让我写在我想写的地方,而不会因为你使用的公式而跳过行。你基本上是在添加一个新行并设置它的数据

您需要的是使用,它允许您在不添加新行或列的情况下修改电子表格范围中的值

示例:

输出:


感谢您的回答,因为电子表格中有旧数据,我不想每次运行代码时都指定范围,我只想在旧数据下填充新数据,而不必跳过公式列的错误。我理解您的担忧,但根据文档,设置值只有两个选项在电子表格中,它是update()或append()。append()不可能满足您的要求,因为它将始终查找公式列末尾的最后一个表。我可以想到的一种解决方法是先删除公式,然后添加一个带有onOpen()触发器的应用程序脚本,该脚本将公式添加到非空行和空公式列中。这样,您就可以使用append()来追加数据(不带公式列),并让应用程序脚本通过添加公式来更新工作表。您的意思是,进入电子表格UI并拖动单元格公式,但使用appscript进行操作?我还可以在当前代码中使用appscript?非常感谢你!你能把appscript文档的链接发给我吗?你的意思是,我没有足够的appscript经验。