Excel / 使用SeleniumBasic查詢發佈到網路的google sheets

原本使用Excel / 在Excel查詢下載google表單(google forms)的試算表資料(google sheets)

提過的「從Web」查詢來抓取發佈到網路的google sheets

但是抓回來的資料會有空白列

而且,如果資料內有換行符號的時候,例如:表單的題目類型為「段落」

貼回工作表的時候,會自動分行

這樣等於一筆資料的某一欄位的資料分列在多行

因此,思考如何修改查詢回來的資料

在測試的過程中,嘗試使用新版的「從Web」查詢,也就是Power Query

雖然可以在編輯「資料行」中利用取代的方式移除換行符號

只是這樣要依據每個資料表來設定查詢參數

感覺太麻煩了

所以改用SeleniumBasic來處理

可以參考這篇 VBA / 使用Excel VBA爬蟲Google搜尋結果

一開始想用模擬複製、貼上的方式

後來才發現SeleniumBasic不能將資料貼入Excel

只能模擬鍵盤輸出到瀏覽器中

最後,找到利用  .AsTable.ToExcel 將取得的html表格資料轉為excel表格資料的方法

Set BOT = New WebDriver

...

BOT.FindElementByCss(".waffle").AsTable.ToExcel Sheets(TableName).Range("A1")

發佈到網路的google sheets,資料是在class名稱為waffle的表格裡

可以用FindElementByCss(“.waffle”)來抓取

因為只有一個table,也可以用FindElementByTag(“table”)

備註:

FindElementByCss 抓取第一個符合的Css,等於FindElementsByCss(1)

同理

FindElementByTag 抓取第一個符合的Tag,等於FindElementsByTag(1)

.AsTable.ToExcel 後面接著要貼入資料的工作表位置

 

這個方式解決了換行的問題

但是空白列還是要另外寫程式來處理…

參考資料

[原创] vba中使用Selenium