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.sendRuby の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) 本文にある必要があります。message.id ではなくドラフトID を実際に提供していることを確認できますか?

実際のリクエストのHTTPトレースを取得できますか?これは非常に役立ちます(クライアントまたはクライアントが使用する基礎となるhttpライブラリなどでこれを設定できるはずです)。

于 2014-08-26T18:27:34.413 に答える