我有一長串Campaign名稱,我需要摺疊爲長度爲1的字符向量,然後通過「AdWords」API中的「where」子句通過「 RAdwords「包。字符串在傳遞到函數時被截斷
創建此字符串直到其長度達到某些值被截斷的位置時纔會產生問題,這會導致AdWords API調用出錯。
下面是設置的樣本,這將不會導致錯誤:
campaigns <- paste0("Campaign ", seq(1,5))
collapsed_campaigns <- paste0(campaigns, collapse = "','")
campaign_filter1 <- paste("CampaignName IN ['", collapsed_campaigns, "']")
這裏是一個設置,這將導致一個錯誤:
campaigns <- paste0("Campaign ", seq(1,50))
collapsed_campaigns <- paste0(campaigns, collapse = "','")
campaign_filter2 <- paste("CampaignName IN ['", collapsed_campaigns, "']")
檢查的每個可變顯示結構:
> str(campaign_filter1)
chr "CampaignName IN [' Campaign 1','Campaign 2','Campaign 3',
'Campaign 4','Campaign 5 ']"
> str(campaign_filter2)
chr "CampaignName IN [' Campaign 1','Campaign 2','Campaign 3',
'Campaign 4','Campaign 5','Campaign 6','Campaign 7','Campaign 8','Camp"| __truncated__
如果我在RAdwords中通過'campaign_filter1'作爲我的where子句,那麼事情就像預期的那樣運行d。
如果我通過「campaign_filter2」爲where子句中,我得到這個錯誤:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?><reportDownloadError>
<ApiError><type>QueryError.INVALID_WHERE_CLAUSE</type><trigger></trigger>
<fieldPath></fieldPath></ApiError></reportDownloadError>
看來「| 截斷」是越來越字面上傳遞給RAdwords功能。
這裏是一個失敗的呼叫檢查的「traffic_data」的結構RAdwords結果:
> str(traffic_data)
Classes ‘data.table’ and 'data.frame': 1 obs. of 1 variable:
$ ads: chr "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>
<reportDownloadError><ApiError><type>QueryError.INVALID_WHERE_CLAU"| __truncated__
- attr(*, ".internal.selfref")=<externalptr>
很顯然,我可以解決這個某種循環功能和API的一個調用數據一次運動,但這將是非常低效的。我怎樣才能讓整個字符串傳遞給RAdwords?
你是否100%確定'| |截斷「結束在您的查詢?您是否檢查過發送並驗證的實際查詢文本?我只問,因爲我會覺得非常驚訝。無論如何,檢查實際的查詢文本將提供信息,因爲它會揭示遊戲中的特定語法錯誤。 – joran
...因此,例如,當我運行'RAdwords :: statement'並提供您的長WHERE子句時,整個事情都被明確插入,而不是被截斷。也許API的長度限制...? – joran
啊,是的,我現在可以看到。 那麼,答案將是,我必須找出那個API限制是什麼,並從那裏解決它。謝謝! – holemanm