Excel 股市資料抓取服務

提供Excel 股市資料抓取服務
可透過下列方式聯絡我
Email: iamaraymond@yahoo.com.tw
(FB請先加我好友再私訊,不然會跑到陌生訊息)

課程:
Excel VBA 金融資料抓取 | 打造股票研究系統 (學生數: 602,學員評價5顆星)
無痛起步-Excel VBA超入門實戰(學生數: 413,學員評價5顆星)


2018年7月1日 星期日

VBA結合line機器人自動推送訊息

最近花了許多時間研究Line機器人,以前都只能用line notify來發送給自己的訊息
但這麼會讓所有不同類別的訊息全部夾雜在line notify
如果可以用不同的機器人來推播不同的消息就好了
EX:一個機器人專門推播股票新聞,一個機器人專門推播天氣狀況...等等

今天終於學會怎麼做了!



首先,你當然要先有個line機器人
這部分算是蠻簡單的,到 https://developers.line.me/ 註冊一個機器人
網路上也有許多教學

接下來取得2樣東西
1.channel access token
如果沒有就按旁邊的issue,時間選 0 hour

2.userID
UsedID在最底下就可取得

然後將這兩樣東西帶入程式碼

Sub test()

Dim myXML As Object
Set myXML = CreateObject("winHttp.winHttpRequest.5.1")

channelAccessToken = ""
UserId = ""
sendMsg = "zzz"

With myXML
    .Open "POST", "https://api.line.me/v2/bot/message/push", False
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Authorization", "Bearer " & channelAccessToken
    payLoad = "{""to"":""" & UserId & """, ""messages"":[{""type"":""text"",""text"":""" & sendMsg & """}]}}"
                 
    .send payLoad
 

End With

Set myXML = Nothing

End Sub

接下來只要按執行即可看到你的機器人出現訊息了!
(記得要先加自己機器人好友,只要掃上面的QR code就可以了)

參考資料
Line API reference

完整學習VBA自動化抓取網頁資料+資料圖表化,做出自己的股票研究系統

請參考
(學生數: 602,學員評價5顆星)

25 則留言:

  1. 請問版大,機器人還有啓動其他額外設定嗎?我拿到channel access token 及id並加機器人為好友,執行上述程式後沒有出現訊息...,可以怎麼查測知道是否卡在哪個環節嗎?

    回覆刪除
    回覆
    1. 不用webhook,可以使用debug.print .responseText來看一下錯誤訊息

      刪除
    2. 您好,我之前複製後使用了一陣子(公司電腦),但突然不能用了。我確定程式碼沒有問題,因為好幾個檔案都有用,且都成功過。不知是否要啟動哪個增益集,還是設定上要怎麼處理呢?感謝🙏

      刪除
  2. 作者已經移除這則留言。

    回覆刪除
  3. 謝謝版大的回覆,後來我知道原因了....因為UserId 是指接收的人或群組的id,呵..我以為是填機器人的id,謝謝你,只是要去查接收人的id蠻麻煩的,看 https://developers.line.me的解釋,本想用它來查接收人的id,但好像把私人的lineid 註冊進去就無法reback,只好作罷

    回覆刪除
  4. 你寫的文章很不錯,有機會可以跟你交流一下嗎?
    我的Line ID: aminwhite5168

    回覆刪除
  5. 感謝版大的分享,另外想請教如果是要用VBA上傳照片又該如何寫呢???

    回覆刪除
    回覆
    1. 哈囉~這部分首先要先將照片存在一個可產生https網址的地方,印象中dropbox和google drive都可以
      接著參考line API文件,了解如何發送照片訊息

      刪除
  6. 請問 從 excel vba 傳資料給line的特定帳號(好友) 不是 line notify
    要準備什麼程式 或 其流程??
    謝謝!

    回覆刪除
    回覆
    1. 哈囉,目前這是無法做到的,若真的可以達到那豈不是廣告商可以大範圍散佈廣告資訊?

      所以目前的做法是,你需要到line developer創建一隻機器人,然後讓這個機器人加入好友,這樣這個機器人才有「權限」發訊息給你

      刪除
  7. 問一下喔! 我剛抄過去 訊息有傳成功過一次後 我接著多按幾下就沒有動作了 是有限制發送的頻率嗎?

    回覆刪除
  8. 她跑出這段話 我不知道哪錯了
    {"message":"The property, 'to', in the request body is invalid (line: -, column: -)"}

    回覆刪除
    回覆
    1. 哈囉不好意思這麼晚回覆,我想可能是有不小心誤觸到甚麼按鍵,導致格式跑掉,能麻煩你在複製一次上面的格式嗎

      刪除
  9. UsedID在最底下就可取得,可是機器人發的訊息只能給自己看別人看不到,要如何知道別人或群組ID呢?

    回覆刪除
    回覆
    1. 這部分的話用VBA是做不到的
      原因是因為,如果你要取得別人的ID,必須先讓那位用戶加機器人,當那位用戶加機器人好友後,Line會傳資料給你,大概就是說哪位用戶在甚麼時間關注機器人了,這時候你才拿的到別人的UserID
      但要做到這點,你必須有一個Server去接Line傳給你的資料,所以你必須把程式放在Heroku、AWS等雲端平台,或是將自己的電腦當作Server,此外使用的語言也會是Python等等
      不過如果是要在群組內發消息,可以試試看Line Notify,我最近也許會研究看看

      刪除
  10. 作者已經移除這則留言。

    回覆刪除
  11. 請問訊息內容要換行還要再加上什麼code,謝謝

    回覆刪除
  12. 請問userid在哪邊的最底下可以看到呢?謝謝

    回覆刪除
  13. 我發現,每個Group ID和 UserID不管對哪個官方帳號都是一樣的,目前的做法是,用GAS綁一個API的Web hook 裡面可以Get到所有人的UID和訊息,透過Line notify把訊息傳給自己 , 然後再用版大的VBA發訊息,成功解決Web hook無法私聊的問題,感激👍

    回覆刪除
  14. 完了,按了好幾次上一頁,然後就變這樣了😭

    回覆刪除
  15. 大哥 您好,感謝您的分享手把手教學,已學會發送訊息,想進一步請問該如何使用VBA 接收 LineBot所收到的使用者訊息? 希望可以在上班時間用VBA與別人聊Line (工作環境只能用VBA)

    回覆刪除
  16. 請問在執行階段,出現"安全通道支援發生錯誤"的錯誤訊息該如何解決

    回覆刪除