0

我在通过他们的 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 的任何地方?另外我在哪里可以找到记录在哪里以及应该是什么参数?

谢谢!

4

2 回答 2

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>' } 
)

我希望这会有所帮助!

于 2016-05-10T04:57:55.150 回答
0

我刚刚离开: https ://developers.google.com/gmail/api/v1/reference/users/drafts/send

但我认为你说得对。userId 应该是一个参数(例如在 URL 中),草稿 ID 应该在 (POST) 正文中。您能否确认您实际上提供的是草稿ID 而不是 message.id?

您是否能够获得实际请求的 HTTP 跟踪,这将有很大帮助(您应该能够在客户端或客户端使用的底层 http 库等上设置它)。

于 2014-08-26T18:27:34.413 回答