用Excel工作表调用E5 10个API(转)

2020-04-22 0 2,031 百度已收录

相信Office办公软件每个人都会用到,其中可能Excel有部分朋友用得比较多,那么小弟用Excel VBA写了个调用E5 API的东东,供各位大佬试试,在微软自己的开发环境下调用API,是否能为E5续订助力呢?

注意,不保证一定能续订
注意,不保证一定能续订
注意,不保证一定能续订

好了,废话不多说,先上效果图【第1版】:

用Excel工作表调用E5 10个API(转)

首先,感谢这个博客主的教程:https://blog.432100.xyz/index.php/archives/50/

大家请按这个博客教程创建自己的应用程序,然后开启如下权限:

Files.Read.All   Files.ReadWrite.All   Sites.Read.All   Sites.ReadWrite.All

User.Read.All   User.ReadWrite.All   Directory.Read.Al   Directory.ReadWrite.All

Mail.Read   Mail.ReadWrite   MailboxSettings.Read   MailboxSettings.ReadWrite

然后按博客教程里的操作,用 rclone 获取 access_token ,注意,是:access_token,不是:refresh_token,可以看下图(红箭头位置):

用Excel工作表调用E5 10个API(转)

然后新建一个 Excel 工作表,打开工作表,什么都不用填先,先另存为 .xlsm 格式的文件,名字随便,因为只有 .xlsm 格式的 Excel 文件才能保存 Excel VBA 代码,打开你另存的 .xlsm 文件,里面只会有一个 Sheet1 工作表,把上一步得到得 access_token 复制到 A1 单元格中,注意一定是复制到 A1 单元格中,然后按 Alt+F11 组合键,进入 Excel VBA 编辑器窗口,然后点:插入–>模块,在左边工程资源管理器窗口里就会新建一格”模块1“,

用Excel工作表调用E5 10个API(转)

然后将下面所有代码复制到”模块1“中:

 

Private Flag As Long
Private Count As Long

Public Sub MainProgram()
    Dim accessToken As String
    accessToken = Worksheets("sheet1").Range("A1").Value
    Dim url(1 To 10) As String
    url(1) = "https://graph.microsoft.com/v1.0/me/drive/root"
    url(2) = "https://graph.microsoft.com/v1.0/me/drive"
    url(3) = "https://graph.microsoft.com/v1.0/users"
    url(4) = "https://graph.microsoft.com/v1.0/me/messages"
    url(5) = "https://graph.microsoft.com/v1.0/me/mailFolders/inbox/messageRules"
    url(6) = "https://graph.microsoft.com/v1.0/me/drive/root/children"
    url(7) = "https://graph.microsoft.com/v1.0/me/mailboxSettings"
    url(8) = "https://graph.microsoft.com/v1.0/me/mailFolders"
    url(9) = "https://graph.microsoft.com/v1.0/me/outlook/masterCategories"
    url(10) = "https://graph.microsoft.com/v1.0/sites/root/drives"
   
    Dim http As Object
    Set http = CreateObject("MSXML2.XMLHTTP")
    Dim i As Long
    For i = 1 To 10 Step 1
        On Error GoTo a
        http.Open "GET", url(i), False
        http.setRequestHeader "Content-Type", "application/json"
        http.setRequestHeader "Authorization", accessToken
        http.Send

        Do While http.ReadyState <> 4
            DoEvents
        Loop
            
        If http.Status = 200 Then
            Worksheets("sheet1").Range("A11").Select
            Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
            ActiveCell.FormulaR1C1 = "成功调用第【" & i & "】个API,第【" & Count & "】次," & "调用时间:" & Now()
            Worksheets("sheet1").Range("A10").Select
            
        Else
a:
            Worksheets("sheet1").Range("A11").Select
            Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
            ActiveCell.FormulaR1C1 = "第【" & i & "】个API调用失败!" & "出错时间:" & Now()
            Worksheets("sheet1").Range("A10").Select

        End If
    Next
    Count = Count + 1
    Call ExecProgram
End Sub

Public Sub ExecProgram()
    If Flag = 1 Then
        Application.OnTime Now() + TimeValue("00:00:10"), "MainProgram"     '这里修改API调用时间间隔,默认为每隔10秒调用一次,格式为:时:分:秒
    Else
        Exit Sub
    End If
End Sub

Public Sub Run()
    Flag = 1
    Count = 1
    Call ExecProgram
    MsgBox "开始调用API!"
End Sub

Public Sub Shutdown()
    Flag = 0
    MsgBox "关闭调用程序!"
End Sub


然后切换回到 Sheet1 工作表界面,选择:开发工具–>插入 ,选择”表单控件“中第1格”按钮控件“,如图

用Excel工作表调用E5 10个API(转)

按照这个步骤建2个”按钮控件“,然后右键点第1个”按钮控件“,选择”指定宏“,然后在弹出得对话框中选择” run “这个宏,然后点确定,然后再次右键点这个“按钮控件”,选择“编辑文字”,为这个控件命名为“启动”,重复这一步骤,设置第2个”按钮控件“,选择” Shutdown “这个宏,然后点确定,最后也是右键点击,可以更改控件名称为“关闭”,然后你单击“启动”按钮,就开始调用E5 API了。我默认设置为10秒间隔,你可以自己修改时间间隔。

另外要说明一下:
1、好处是无需VPS,可随时打开运行
2、不足之处在于需要重新验证 access_token
2.1、关机重启后,需要重新用 rclone 获取 access_token 更换 A1 单元格之前得 access_token 才能再次正常运行
2.2、程序隔得太久不运行后,需要重新用 rclone 获取 access_token 更换 A1 单元格之前得 access_token 才能再次正常运行

其实已经写好了第2个版本,第2个版本是支持设置指定时间区间内随机调用API,但是办法比较笨拙,所有就先没有放出来给大家,有没有哪位大佬能做下随机调用的修改,麻烦弄弄,造福各位mjj,谢谢

最后,祝大家在piao E5的道路上越走越远~~

原文地址:https://www.hostloc.com/thread-674020-1-2.html

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

栗子博客 软件 用Excel工作表调用E5 10个API(转) https://www.lizi.tw/soft/7341.html

建筑工地上施工员,闲暇时弄个博客打发时间,

常见问题
  • 1、杰齐1.7仅适用于PHP5.2 2、需Zend支持 3、尽量使用宝塔面板 4、尽量使用Windows 系统,关关对Linux支持不太友好。
查看详情

相关文章

评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务

用Excel工作表调用E5 10个API(转)-海报

分享本文封面