Confluence:使用 VBA 更新现有页面

2024-05-15

我尝试使用 VBA 更新 Confluence 页面。 我的想法是使用REST API加载页面内容,修改内容然后上传修改后的版本。

这是我的代码

Private Sub TestRESTApi()
Dim uname As String
uname = "XXXX" '
Dim pw As String
pw = "XXXX"


Set requester = CreateObject("WinHttp.WinHttpRequest.5.1")
Dim ret As String
Dim send_str As String
With requester
    .Open "GET", "https://XXXX/rest/api/content/20057665?expand=body.storage", False
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Accept", "application/json"
    .setRequestHeader "Authorization", "Basic"
    .SetCredentials uname, pw, 0
    .Send
    ret = .responseText
    Debug.Print (ret)
End With

'Do replacement stuff here
'send_str = ret with replacements in the "value" part


Set sender = CreateObject("WinHttp.WinHttpRequest.5.1")
With sender
    .Open "PUT", "https://XXXX/rest/api/content/20057665", False
    .setRequestHeader "Content-Type", "application/json"
    .setRequestHeader "Authorization", "Basic"
    .SetCredentials uname, pw, 0
    .Send send_str
    Debug.Print (.responseText)

End With
End Sub

GET 请求有效,我返回一个 json:

{
    "_expandable": {
        "ancestors": "",
        "children": "/rest/api/content/20057665/child",
        "container": "/rest/api/space/XXXX",
        "descendants": "/rest/api/content/20057665/descendant",
        "history": "/rest/api/content/20057665/history",
        "metadata": "",
        "operations": "",
        "restrictions": "/rest/api/content/20057665/restriction/byOperation",
        "space": "/rest/api/space/XXXX",
        "version": ""
    },
    "_links": {
        "base": "https://XXXX",
        "collection": "/rest/api/content",
        "context": "",
        "edit": "/pages/resumedraft.action?draftId=20057665&draftShareId=9c5eaf5c-d9c9-44d6-b7b6-317714f7581f",
        "self": "https://XXXX/rest/api/content/20057665",
        "tinyui": "XXXX",
        "webui": "/display/XXXX/Sandbox"
    },
    "body": {
        "_expandable": {
            "anonymous_export_view": "",
            "editor": "",
            "export_view": "",
            "styled_view": "",
            "view": ""
        },
        "storage": {
            "_expandable": {
                "content": "/rest/api/content/20057665"
            },
            "representation": "storage",
            "value": "THE CONTENT OF THE REQUESTET PAGE AS HTML"
        }
    },
    "extensions": {
        "position": "none"
    },
    "id": "20057665",
    "status": "current",
    "title": "Sandbox",
    "type": "page"
}

但是当我尝试使用修改后的内容更新页面时,我收到以下错误消息:

{   
      "statusCode":400,   
      "data":   {
          "authorized":false,
          "valid":true,
          "errors":[],
          "successful":false   
      },   
      "message":"Must supply an incremented version when updating Content. No version supplied." 
}

但 GET 响应中没有页面的当前版本。 我从哪里获取当前版本号以及必须将版本号写入哪里?


我自己找到了解决方案。 当我请求页面的当前版本时,我必须添加,version到请求。 (.Open "GET", "https://XXXX/rest/api/content/20057665?expand=body.storage,version", False代替.Open "GET", "https://XXXX/rest/api/content/20057665?expand=body.storage", False)。所以我在响应中获取有关当前版本的信息:

   "version":{  
      "by":{  
         "type":"known",
         "username":"XXXX",
         "userKey":"XXXX",
         "profilePicture":{  
            "path":"/images/icons/profilepics/default.png",
            "width":48,
            "height":48,
            "isDefault":true
         },
         "displayName":"XXXX",
         "_links":{  
            "self":"https://XXXX/rest/experimental/user?key=XXXX"
         },
         "_expandable":{  
            "status":""
         }
      },
      "when":"2018-08-07T08:31:41.225+02:00",
      "message":"",
      "number":2,
      "minorEdit":false,
      "hidden":false,
      "_links":{  
         "self":"https://XXXX/rest/experimental/content/20057665/version/2"
      }

在这里我可以增加数字并且汇合服务器接受我的更新。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Confluence:使用 VBA 更新现有页面 的相关文章

随机推荐

  • 沿轴 0 重复 scipy csr 稀疏矩阵

    我想重复 scipy csr 稀疏矩阵的行 但是当我尝试调用 numpy 的重复方法时 它只是将稀疏矩阵视为对象 并且只会将其作为 ndarray 中的对象重复 我浏览了文档 但找不到任何实用程序来重复 scipy csr 稀疏矩阵的行 我
  • 不可见的 reCAPTCHA - 缺少必需的参数:sitekey

    我正在为每个带有具有类的按钮的表单动态加载不可见的 reCAPTCHAg recaptcha 我遇到的问题是验证码未正确加载 我不知道为什么 我按照验证码网站上的文档进行操作 但我不确定如何以及为什么会出现此错误 Uncaught Erro
  • DocuSign 创建一个长期存在的嵌入式签名 URL?

    嵌入式签名 url API 方法返回的 URL信封视图 createRecipient https developers docusign com docs esign rest api reference Envelopes Envelo
  • Java 正则表达式中的逻辑 AND

    是否可以在 Java Regex 中实现逻辑 AND 如果答案是肯定的 那么如何实现呢 正则表达式中的逻辑 AND 由一系列堆叠的先行断言组成 例如 foo bar glarch 将匹配包含所有三个 foo bar 和 glarch 的任何
  • 这两种方式哪一种是惯用的方式? time.Sleep() 还是自动收报机?

    我必须每分钟执行一些语句 我不确定我应该遵循以下哪一项 如果有人能解释内存和 CPU 方面的优缺点 那就太好了 时间 Sleep func main go func for time Sleep time Minute fmt Printl
  • Google Cloud Messaging 显示成功消息但未发送 iOS

    所以我在使用 Google Cloud Messaging 时遇到了一个非常奇怪的问题 我遇到的问题是它正在成功注册设备 并且当发送消息时我会收到来自 Google 的成功消息 但设备永远不会收到任何消息 我从 GCM 得到的消息是 res
  • Pip 无法在 Windows 上安装 Twisted

    我正在尝试在 Windows 8 计算机上安装 Twisted 在 Twisted 官方网站上 只有一个 Windows 版的 Wheel 文件 https twistedmatrix com trac wiki Downloads htt
  • 有没有办法在 MySQL 中有效地对 TRUNCATE 或 DROP TABLE 进行 GRANT ?

    我最近在 MySQL 5 5 x 中尝试过 GRANT SELECT INSERT UPDATE DELETE TRUNCATE ON crawler TO my user localhost WITH GRANT OPTION 这会导致错
  • JetPack Compose - 卡中行中的weight() 不起作用

    创建 Android 应用程序时 我将一些可组合项放在卡片的一行中 如下所示 但它没有按我的预期工作 我添加 weight 1f 的可组合项不再显示 data class Test val title String val text Str
  • Kafka Streams - 跳跃窗口 - 去重键

    我正在 4 小时窗口上进行跳跃窗口聚合 每 5 分钟前进一次 由于跳跃窗口重叠 我得到了具有不同聚合值的重复键 TimeWindows of 240 60 1000L advanceBy 5 60 1000L 如何消除具有重复数据的重复键或
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • SQL Server Management Studio v18 的命令行参数登录

    使用 SQL Server 身份验证时是否仍然可以从命令行打开 SQL Server Management Studio v18 根据微软的发行说明 由于安全风险 他们删除了 P 命令行参数 因此 可以从命令行使用 SQL Server 身
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • 如何解决 greenDAO 在执行 InsertOrReplace 时“不存在这样的表错误”?

    我正在使用 greenDAO 并且已成功生成所有必需的类和实体 并且我可以看到我的表已创建 但是在要替换的行上放置断点后 我收到一条错误消息 告诉我 不存在这样的表错误 try appTimeUsageDao insertOrReplace
  • 进入后台时 Alamofire 请求卡住?

    我正在使用 Alamofire 调用 Web 服务 该服务需要相当长的时间才能加载 如果应用程序进入后台 当我返回应用程序时 我会被加载程序卡住 我想这是因为调用永远不会向我的完成处理程序返回任何内容 我该如何解决这个问题 您可以使用后台抓
  • 渐近符号的除法运算

    Suppose S n Big Oh f n T n Big Oh f n both f n 相同地属于同一类 我的问题是 为什么S n T n Big Oh 1 是不正确的 考虑S n n 2 and T n n 然后两个S and T
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • 每个数据库多个/单个 *.edmx 文件

    我有一个通过 ADO net 数据服务与数据库交互的项目 数据库很大 近 150 个具有依赖关系的表 该项目几年前开始 当时使用的是数据集 现在我们正在转向实体模型关系 由于我们添加了更多需要使用的表 该模型正在不断增长 这是管理这一切的正
  • 为什么 LinkedIn v2 Share API 在任何 v2/shares 端点上给出权限不足的错误?

    当我调用任何 v2 LinkedIn 共享 API 端点时 例如https api linkedin com v2 socialActions https api linkedin com v2 socialActions share UR
  • Confluence:使用 VBA 更新现有页面

    我尝试使用 VBA 更新 Confluence 页面 我的想法是使用REST API加载页面内容 修改内容然后上传修改后的版本 这是我的代码 Private Sub TestRESTApi Dim uname As String uname