2011-03-08 93 views
0

是否有最新的教程可用於使用Python的AdWords客戶端,或失敗,有沒有人知道足以取消以下?我是否犯過一些配置錯誤,或者Python 2.6不受支持?如何讓Google AdWords API Python客戶端庫發揮作用?

在Windows上我已經安裝:

  • 的Python 2.6
  • setuptools的-0.6c11.win32-py2.6.exe
  • 的PyXML-0.8.4
  • SOAPpy的-0.12.4
  • ZSI-2.0-RC3
  • adwords_api_python_13.2.0

我已向AdWords配置程序提供了MCC帳戶電子郵件地址,密碼,空白客戶端電子郵件地址和ID,併爲開發人員令牌提供了附加「+ USD」的相同電子郵件地址。

現在,如果我使用SOAPpy作爲SOAP庫,我會收到關於意外的關鍵字參數timeout的異常,該參數已由SOAPpy中的一個函數提供給SOAPpy中的另一個函數。

如果我使用ZSI作爲SOAP庫(我相信是首選),我得到以下異常:

Traceback (most recent call last): 
    File "tutorial.py", line 36, in <module> 
    campaigns = campaign_service.Mutate(operations)[0] 
    File "c:\Python26\lib\site-packages\adspygoogle\adwords\CampaignService.py", l 
ine 112, in Mutate 
    'Campaign', self._loc, request) 
    File "c:\Python26\lib\site-packages\adspygoogle\adwords\AdWordsWebService.py", 
line 256, in CallMethod 
    self.__ManageSoap(buf, start_time, stop_time, error) 
    File "c:\Python26\lib\site-packages\adspygoogle\adwords\AdWordsWebService.py", 
line 130, in __ManageSoap 
    raise Error(e) 
adspygoogle.common.Errors.Error: 
Traceback (most recent call last): 
    File "c:\Python26\lib\site-packages\adspygoogle\common\WebService.py", line 20 
8, in CallMethod 
    eval('service.%s(request)' % method_name)) 
    File "<string>", line 1, in <module> 
    File "c:\Python26\lib\site-packages\adspygoogle\adwords\zsi\v201008\CampaignSe 
rvice_services.py", line 47, in mutateCampaign 
    self.binding.Send(None, None, request, soapaction="", **kw) 
    File "build\bdist.win32\egg\ZSI\client.py", line 267, in Send 
    self.SendSOAPData(soapdata, url, soapaction, **kw) 
    File "build\bdist.win32\egg\ZSI\client.py", line 301, in SendSOAPData 
    self.h.send(soapdata) 
    File "c:\Python26\lib\site-packages\adspygoogle\common\zsi\HttpsConnectionHand 
ler.py", line 93, in send 
    httplib.HTTPSConnection.endheaders(self) 
    File "c:\Python26\lib\httplib.py", line 892, in endheaders 
    self._send_output() 
    File "c:\Python26\lib\httplib.py", line 764, in _send_output 
    self.send(msg) 
    File "c:\Python26\lib\site-packages\adspygoogle\common\zsi\HttpsConnectionHand 
ler.py", line 93, in send 
    httplib.HTTPSConnection.endheaders(self) 
    File "c:\Python26\lib\httplib.py", line 890, in endheaders 
    raise CannotSendHeader() 
CannotSendHeader [RAW DATA: _________________________________ Tue Mar 08 16:54:4 
0 2011 REQUEST: 

其次是一些XML,我已經修改刪除識別數據:

<SOAP-ENV:Envelope xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xm 
lns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ZSI="http://www.z 
olera.com/schemas/ZSI/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi=" 
http://www.w3.org/2001/XMLSchema-instance"><SOAP-ENV:Header><RequestHeader xmlns 
="https://adwords.google.com/api/adwords/cm/v201008"><authToken>XYZ</authToken> 
<userAgent>AwApi-Python-13.2.0|XYZ</userAgent><developerTok 
en>[email protected]+USD</developerToken></RequestHeader></SOAP-ENV:Header><SO 
AP-ENV:Body xmlns:ns1="https://adwords.google.com/api/adwords/cm/v201008"><ns1:m 
utate xmlns:ns1="https://adwords.google.com/api/adwords/cm/v201008"><ns1:operati 
ons><ns1:operator>ADD</ns1:operator><ns1:operand><ns1:name>Interplanetary Cruise 
#201138165440485000</ns1:name><ns1:status>PAUSED</ns1:status><ns1:endDate>20120 
101</ns1:endDate><ns1:budget xsi:type="ns1:Budget"><ns1:period>DAILY</ns1:period 
><ns1:amount xsi:type="ns1:Money"><ns1:microAmount>50000000</ns1:microAmount></n 
s1:amount><ns1:deliveryMethod>STANDARD</ns1:deliveryMethod></ns1:budget><ns1:bid 
dingStrategy xsi:type="ns1:ManualCPC"></ns1:biddingStrategy></ns1:operand></ns1: 
operations></ns1:mutate></SOAP-ENV:Body></SOAP-ENV:Envelope> 

我的代碼如下:

from adspygoogle.adwords.AdWordsClient import AdWordsClient 
from adspygoogle.common import Utils 

client = AdWordsClient(path = '../../installers/adwords_api_python_13.2.0.tar/adwords_api_python_13.2.0') 

campaign_service = client.GetCampaignService('https://adwords-sandbox.google.com', 'v201008') 

operations = [{ 
    'operator': 'ADD', 
    'operand': { 
     'name': 'Interplanetary Cruise #%s' % Utils.GetUniqueName(), 
     'status': 'PAUSED', 
     'biddingStrategy': { 
      'type': 'ManualCPC' 
     }, 
     'endDate': '20120101', 
     'budget': { 
      'period': 'DAILY', 
      'amount': { 
       'microAmount': '50000000' 
      }, 
      'deliveryMethod': 'STANDARD' 
     } 
    } 
}] 

campaigns = campaign_service.Mutate(operations)[0] 

# Display results. 
for campaign in campaigns['value']: 
    print ('Campaign with name \'%s\' and id \'%s\' was added.' 
     % (campaign['name'], campaign['id'])) 

print 
print ('Usage: %s units, %s operations' % (client.GetUnits(), 
              client.GetOperations())) 

注意,在教程代碼甚至不起作用,在當前版本的客戶端中沒有aw_api.Client這樣的東西。但上面大多是從教程中複製的。

隨客戶端提供的示例導致相同的錯誤。

我可以嘗試一個較舊的客戶端庫,如果當前簡直是壞,但如果這有什麼差別,我需要一個支持的TargetingIdeaService。

[編輯:哦,對不起,我忘了說我實際上編輯了AdWords客戶端代碼。在Utils.GetDataFromCsvFile中,我從構建傳遞給urllib.urlopen的文件url的行中刪除了.replace(':','|')

這是什麼讓我懷疑我的Python版本可能不支持,自Windows Python 2.6中似乎沒有能夠打開URL file:///c|/foo/bar/baz/]

+0

你可以發表錯誤的SOAP請求和響應?如果它的發送呢? – JiminyCricket 2011-03-08 17:37:40

+0

@JiminyCricket:我編輯了這個問題來添加報告的XML以及異常。這是你的意思,還是有更多的日誌數據隱藏在某個地方? – 2011-03-08 17:45:57

回答

2

你有沒有用ZSI-2.0試過嗎?此問題報告看起來類似於http://code.google.com/p/google-api-adwords-python-lib/issues/detail?id=141。如果您繼續看到此問題,請將您的信息附加到錯誤報告中。

至於教程代碼過時了,好趕上!我會盡快修復它。請跟蹤http://code.google.com/p/google-api-adwords-python-lib/issues/detail?id=152

+0

謝謝,我會盡力回覆你。我沒有意識到2.0-rc3並不是最新的版本 - 我猜他們放棄了pypi(或者pypi放棄了它們,無論以哪種方式工作)。 – 2011-03-09 12:52:12

+0

這是固定的。抱歉沒有找到該錯誤報告自己... – 2011-03-09 13:12:12

相關問題