我很难通过他们的API在Gmail中发送草稿,而且文档也没有多大帮助,特别是因为我使用的是Ruby。
我可以创建一个没有任何问题的草稿,但是当我尝试发送新创建的草稿时,我收到一条错误消息:
ArgumentError (wrong number of arguments (0 for 1))
涉及的代码如下:
@gmail = client.discovered_api('gmail', 'v1')
@send_result = client.execute(
:api_method => @gmail.users.drafts.send,
:parameters => { 'userId' => 'me' },
:body_object => { 'id' => '<message_id>' }
)
看一下调试器,似乎出现了错误:
@gmail.users.drafts.send
我在这里缺少什么?我还没有看到任何应该将参数传递给api_method的地方?另外,我在哪里可以找到记录的位置以及参数应该是什么?
谢谢!
答案 0 :(得分:1)
这个问题已经很久了,但我遇到了同样的问题,并认为最好回答迟到而不是。
@gmail.users.drafts.send
正在与Ruby的Object#send发生冲突。您可以通过将Google::APIClient::Resource
项转换为哈希,然后按键读取值来解决冲突:
:api_method => @gmail.users.drafts.to_h["gmail.users.drafts.send"]
您的示例,包括解决方法:
@gmail = client.discovered_api('gmail', 'v1')
@send_result = client.execute(
:api_method => @gmail.users.drafts.to_h["gmail.users.drafts.send"],
:parameters => { 'userId' => 'me' },
:body_object => { 'id' => '<message_id>' }
)
我希望有所帮助!
答案 1 :(得分:0)
我刚刚离开: https://developers.google.com/gmail/api/v1/reference/users/drafts/send
但我认为你做得对。 userId应该是一个参数(例如在URL中),草稿ID应该在(POST)主体中。你能否确认你实际上提供的是草案 ID而不是message.id?
您是否能够获得实际请求的HTTP跟踪,这将极大地帮助您(您可能能够在客户端或客户端使用的基础http库上设置此项等)。