Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中通过循环从另一个工作表获取值_Python_Google Sheets_Google Sheets Api_Gspread - Fatal编程技术网

在python中通过循环从另一个工作表获取值

在python中通过循环从另一个工作表获取值,python,google-sheets,google-sheets-api,gspread,Python,Google Sheets,Google Sheets Api,Gspread,我试图做的是将源工作表中的每一列粘贴到另一个工作表中的目标工作表中,但每个粘贴操作都应该从第三行开始(例如:A3:A,B3:B…) 但是,我得到的错误如下: ata.values[1731]","description": "Invalid value at 'data.values[1731]' (type.googleapis.com/google.protobuf.ListValue), \"x23232x2x2x442x42x42x42\"" },

我试图做的是将源工作表中的每一列粘贴到另一个工作表中的目标工作表中,但每个粘贴操作都应该从第三行开始(例如:A3:A,B3:B…)

但是,我得到的错误如下:

 ata.values[1731]","description": "Invalid value at 'data.values[1731]' (type.googleapis.com/google.protobuf.ListValue), \"x23232x2x2x442x42x42x42\""
              },
              {
                "field": "data.values[1732]",
                "description": "Invalid value at 'data.values[1732]' (type.googleapis.com/google.protobuf.ListValue), \"x242x42x42x42x42x442x427\""
              },
              {
                "field": "data.values[1733]",
                "description": "Invalid value at 'data.values[1733]' (type.googleapis.com/google.protobuf.ListValue), \"x42x424242x42454555x56666\""
              }
                                                       .
                                                       .
                                                       .
我的代码:

sh = client.open('Target')

sh.values_clear("Target_sheet!A3:J10000")

source = client.open('Source')
source_col_numbers = source.sheet1.col_count

i = 1

# creating a holder for the values in Source.sheet1
columns = {}

#getting the values in each column at the Source.sheet1
while i <= source_col_numbers:
    columns[i] = list(filter(None , source.sheet1.col_values(i)))
    i += 1

# will use this variable to iterate between columns in the Target.Target_sheet
charn=ord("A")


#updating the columns in the Target with values from Source

b=1

while b <= source_col_numbers:

    sh.values_update(
        "Target_sheet!"+chr(charn)+"3:"+chr(charn)
         ,
         params={
            'valueInputOption': 'USER_ENTERED'
         } ,
         body={
           'values': columns[b]
        }
        )
    charn+=1
    b+=1

使用
col\u values
可以在列表中获取列的值。但是,当使用
values\u update
方法时,主体要求“values”属性是列表列表列表(请参见:)

除此之外,我相信您试图完成的任务可以用一种更简单的方式完成,即使用。将范围
A1:J9997
移动到
A4:J10000
(向下移动3行)的示例如下所示:

sh=client.open('Target'))
sh.values\U clear(“目标值表!A3:J10000”)
响应=sh.values_get(“A1:J9997”)
电子表格.values\u更新(
“目标表!A3:J10000”,
参数={
“valueInputOption”:“用户输入”
},
正文={
“值”:响应[“值”]
}
)

嘿,谢谢,请在上面的帖子主体中找到我尝试获取的代码,但在下面得到了错误:spread.exceptions.apierro:{“error”:{“code”:400,message:“接收到无效的JSON负载。未知名称\”范围\“at'data.values':找不到字段。\n收到无效的JSON有效负载。未知名称Hey@zeppelin11,感谢您的反馈。发送
values\u update()
请求时,正文应为
{'values':source\u values['values']}
(注意使用
[]
运算符检索实际值).如果对你有效,请告诉我。干杯
target_worksheet.values_clear("Target!A3:J10000") 

source = client.open('Source') 

source_col_numbers = source.sheet1.col_count 

source_values=source.values_get('Sheet1!A:J') 

last_column=chr(source_col_numbers) 

target_worksheet.values_update( 
"Target!A3:"+last_column , 
params={ 'valueInputOption': 'USER_ENTERED' }, 
body={ 'values': source_values } 
)