我發現了一個類似的問題,用於在 confluence 中創建新頁面,但不是用於獲取 confluence Cloud 頁面內容的特定問題,基於 ID 例如在 Google App Script 中並能夠解析頁面正文的內容例如,解析 JSON 結果或使用 Confluence REST-API 來獲取特定對象的內容。
我改編了上述問題的源代碼如下:
function myFunction() {
const url = "https://<company>.atlassian.net/wiki/rest/api/content/<ID>";
const token = "<token>";
const user = "<email>";
headers = { "Authorization": "Basic " + Utilities.base64Encode(user + ':' + token) };
var params = {
"method": "GET",
"headers": headers,
"muteHttpExceptions": false,
"contentType": "application/json"
};
let createResponse = UrlFetchApp.fetch(url, params);
console.log(createResponse.getContentText());
}
<xxxx>
與我的帳戶相關的特定參數在哪裡。<ID>
是 Confluence 文檔 ID。
我正在遵循Confluence Cloud 的 REST API 規範
我收到了回复,但它提供了有關頁面的一般屬性。
將 url 更改為以下內容:
https://<company>.atlassian.net/wiki/rest/api/content/<ID>?expand=body.storage
添加以下後綴: ?expand=body.storage
它生成內容,但很難解析:
{"id":"2020706439","type":"page","status":"current","title":"Onboard Resource Template for
more than one resource","macroRenderedOutput":{},"body":{"storage":{"value":"<ac:structured-macro ac:name=
\"info\" ac:schema-version=\"1\" ac:macro-id=\"756d4d54-7492-49ac-b502-19d1a740ea92\"><ac:rich-text-body><p>
To use it, please make a copy of this template and replace the title with Resource Name(s) and add the
onboarding date as a suffix</p></ac:rich-text-body></ac:structured-macro><table data-layout=\"wide\">
<colgroup><col style=\"width: 182.0px;\" /><col style=\"width: 144.0px;\" /><col style=\"width: 148.0px;\" />
<col style=\"width: 143.0px;\" /><col style=\"width: 137.0px;\" /><col style=\"width: 142.0px;\" />
</colgroup><tbody><tr><td data-highlight-colour=\"#6fa8dc\" colspan=\"6\"><p style=\"text-align: center;\">
<strong>New Resource (s) Onboarding Information and Tracking</strong></p></td></tr>
<tr><td data-highlight-colour=\"#ff9900\"><p>Information Provided by Vendor</p></td>
<td data-highlight-colour=\"#ff9900\"><p>Resource 1</p></td><td data-highlight-colour=\"#ff9900\">
<p>Resource 2</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 3</p></td><td data-highlight-colour=\"#ff9900\">
<p>Resource 4</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 5</p></td></tr><tr><td><p>First
Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Last
Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Address</p></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Phone Number</p></td><td>
<p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>E-Mail</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>WFH or W@Office</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Location (if W@Office)</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Role</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>Start Date</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>End Date</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Name</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Contact Name</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Phone Number</p></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Manager's Name</p></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Team</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#b6d7a8\" colspan=\"6\">
<p>Information Provided by Onboarding Manager</p></td></tr><tr><td><p>New Resource ID</p></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>New
Resource Company E-mail</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td></tr><tr><td><p>Cost Center</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>Laptop Serial Number</p></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#b6d7a8\">
<p><ac:inline-comment-marker ac:ref=\"377a17e3-a869-451f-a58b-19cac76916a4\">Access Requests by
Rosana</ac:inline-comment-marker></p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">
Ticket Number</p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Date </p><p style=\"text-align: center;\">
Submitted</p></td><td data-highlight-colour=\"#b6d7a8\"><p>SNOW Assignee</p></td>
<td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">
Ready in<ac:inline-comment-marker ac:ref=\"269ae226-6036-4ede-9720-d3c25f5d31d2\"> </ac:inline-comment-marker>(n)-Days</p></td>
<td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Date Completed</p></td></tr><tr><td><p>Company ID Request</p></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Laptop</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td><p>Slack</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td>
<p>Outlook</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>WebEx</p></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Ping</p></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#a2c4c9\" colspan=\"6\"><p>Access Request by
Program Manager (or a PM on his behalf)</p></td></tr><tr><td><p>SNOW Access and Timesheets</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#f4cccc\" colspan=\"6\">
<p>Access Request/Action by David Leal</p></td></tr><tr><td><p>Access to Jira/Confluence</p></td>
<td><p /></td><td><p /></td><td><p>Jira Admin</p></td><td><p /></td><td><p /></td></tr>
<tr><td><p>Resource Plan</p></td><td><p /></td><td><p /></td><td><p>Snow Manager</p></td>
<td><p /></td><td><p /></td></tr>
<tr><td><p><em>Actions</em></p></td><td data-highlight-colour=\"#f4f5f7\" colspan=\"5\"><p style=\"text-align: center;\">
<em> Date Completed</em></p></td></tr><tr><td><p style=\"text-align: right;\">Add to Slack Channels</p></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr>
<td><p style=\"text-align: right;\">Add to JIRA Projects</p></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr>
<tr><td data-highlight-colour=\"#fff2cc\"><p>Access Requests by Tech Lead</p></td>
<td data-highlight-colour=\"#fff2cc\"><p>Ticket Number</p></td><td data-highlight-colour=\"#fff2cc\"><p>Date Submitted</p></td>
<td data-highlight-colour=\"#fff2cc\"><p>SNOW Assginee</p></td><td data-highlight-colour=\"#fff2cc\"><p>Ready in Days</p></td>
<td data-highlight-colour=\"#fff2cc\"><p>Date Completed</p></td></tr><tr><td><p>AWS Work Space (VDI)</p></td>
<td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>GitLab</p></td><td><p /></td><td><p /></td>
<td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>AWS Console</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td>
<td><p /></td></tr></tbody></table><p />",
"representation":"storage","embeddedContent":[],"_expandable":{"content":"/rest/api/content/2020706439"}},
"_expandable":{"editor":"","atlas_doc_format":"","view":"","export_view":"","styled_view":"","dynamic":"",
"editor2":"","anonymous_export_view":""}},"extensions":{"position":158},"_expandable":{"childTypes":"","container":
"/rest/api/space/PDC","metadata":"","operations":"","schedulePublishDate":"","children":"/rest/api/content/2020706439/child",
"restrictions":"/rest/api/content/2020706439/restriction/byOperation","history":"/rest/api/content/2020706439/history",
"ancestors":"","version":"","descendants":"/rest/api/content/2020706439/descendant","space":
"/rest/api/space/PDC"},"_links":{"editui":"/pages/resumedraft.action?draftId=2020706439","webui":
"/spaces/PDC/pages/2020706439/Onboard+Resource+Template+for+more+than+one+resource","context":"/wiki",
"self":"https://<company>.atlassian.net/wiki/rest/api/content/2020706439","tinyui":"/x/h4hxe","collection":
"/rest/api/content","base":"https://pan-american.atlassian.net/wiki"}}
這裡有關於這個問題的以下問題:
expand=body.storage
或者相反有更好的方法來獲取 Confluence 頁面(或特定表)的內容,因此更容易解析。我相信你的目標如下。
it generates the content, but it is difficult to parse:
) in your question and put them to the sheet.
In this case, how about the following sample script? In this case, I would like to propose using Sheets API. The pasteData of Sheets API can parse the HTML table.
Please copy and paste the following script to the script editor of Google Spreadsheet. And, this script uses Sheets API. So please enable Sheets API at Advanced Google services. And, please set the sheet name. And run the function. By this, the Sheets API parses the HTML table and puts to the sheet.
function myFunction() {
const obj = { "id": "2020706439", "type": "page", "status": "current", "title": "Onboard Resource Template for more than one resource", "macroRenderedOutput": {}, "body": { "storage": { "value": "<ac:structured-macro ac:name=\"info\" ac:schema-version=\"1\" ac:macro-id=\"756d4d54-7492-49ac-b502-19d1a740ea92\"><ac:rich-text-body><p>To use it, please make a copy of this template and replace the title with Resource Name(s) and add the onboarding date as a suffix</p></ac:rich-text-body></ac:structured-macro><table data-layout=\"wide\"><colgroup><col style=\"width: 182.0px;\" /><col style=\"width: 144.0px;\" /><col style=\"width: 148.0px;\" /><col style=\"width: 143.0px;\" /><col style=\"width: 137.0px;\" /><col style=\"width: 142.0px;\" /></colgroup><tbody><tr><td data-highlight-colour=\"#6fa8dc\" colspan=\"6\"><p style=\"text-align: center;\"><strong>New Resource (s) Onboarding Information and Tracking</strong></p></td></tr><tr><td data-highlight-colour=\"#ff9900\"><p>Information Provided by Vendor</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 1</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 2</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 3</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 4</p></td><td data-highlight-colour=\"#ff9900\"><p>Resource 5</p></td></tr><tr><td><p>First Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Last Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Address</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Phone Number</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>E-Mail</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>WFH or W@Office</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Location (if W@Office)</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Role</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Start Date</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>End Date</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Contact Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Vendor's Phone Number</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Manager's Name</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Team</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#b6d7a8\" colspan=\"6\"><p>Information Provided by Onboarding Manager</p></td></tr><tr><td><p>New Resource ID</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>New Resource Company E-mail</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Cost Center</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Laptop Serial Number</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#b6d7a8\"><p><ac:inline-comment-marker ac:ref=\"377a17e3-a869-451f-a58b-19cac76916a4\">Access Requests by Rosana</ac:inline-comment-marker></p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Ticket Number</p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Date </p><p style=\"text-align: center;\">Submitted</p></td><td data-highlight-colour=\"#b6d7a8\"><p>SNOW Assignee</p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Ready in<ac:inline-comment-marker ac:ref=\"269ae226-6036-4ede-9720-d3c25f5d31d2\"> </ac:inline-comment-marker>(n)-Days</p></td><td data-highlight-colour=\"#b6d7a8\"><p style=\"text-align: center;\">Date Completed</p></td></tr><tr><td><p>Company ID Request</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Laptop</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Slack</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Outlook</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>WebEx</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>Ping</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#a2c4c9\" colspan=\"6\"><p>Access Request by Program Manager (or a PM on his behalf)</p></td></tr><tr><td><p>SNOW Access and Timesheets</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#f4cccc\" colspan=\"6\"><p>Access Request/Action by David Leal</p></td></tr><tr><td><p>Access to Jira/Confluence</p></td><td><p /></td><td><p /></td><td><p>Jira Admin</p></td><td><p /></td><td><p /></td></tr><tr><td><p>Resource Plan</p></td><td><p /></td><td><p /></td><td><p>Snow Manager</p></td><td><p /></td><td><p /></td></tr><tr><td><p><em>Actions</em></p></td><td data-highlight-colour=\"#f4f5f7\" colspan=\"5\"><p style=\"text-align: center;\"><em> Date Completed</em></p></td></tr><tr><td><p style=\"text-align: right;\">Add to Slack Channels</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p style=\"text-align: right;\">Add to JIRA Projects</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td data-highlight-colour=\"#fff2cc\"><p>Access Requests by Tech Lead</p></td><td data-highlight-colour=\"#fff2cc\"><p>Ticket Number</p></td><td data-highlight-colour=\"#fff2cc\"><p>Date Submitted</p></td><td data-highlight-colour=\"#fff2cc\"><p>SNOW Assginee</p></td><td data-highlight-colour=\"#fff2cc\"><p>Ready in Days</p></td><td data-highlight-colour=\"#fff2cc\"><p>Date Completed</p></td></tr><tr><td><p>AWS Work Space (VDI)</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>GitLab</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr><tr><td><p>AWS Console</p></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td><td><p /></td></tr></tbody></table><p />", "representation": "storage", "embeddedContent": [], "_expandable": { "content": "/rest/api/content/2020706439" } }, "_expandable": { "editor": "", "atlas_doc_format": "", "view": "", "export_view": "", "styled_view": "", "dynamic": "", "editor2": "", "anonymous_export_view": "" } }, "extensions": { "position": 158 }, "_expandable": { "childTypes": "", "container": "/rest/api/space/PDC", "metadata": "", "operations": "", "schedulePublishDate": "", "children": "/rest/api/content/2020706439/child", "restrictions": "/rest/api/content/2020706439/restriction/byOperation", "history": "/rest/api/content/2020706439/history", "ancestors": "", "version": "", "descendants": "/rest/api/content/2020706439/descendant", "space": "/rest/api/space/PDC" }, "_links": { "editui": "/pages/resumedraft.action?draftId=2020706439", "webui": "/spaces/PDC/pages/2020706439/Onboard+Resource+Template+for+more+than+one+resource", "context": "/wiki", "self": "https://<company>.atlassian.net/wiki/rest/api/content/2020706439", "tinyui": "/x/h4hxe", "collection": "/rest/api/content", "base": "https://pan-american.atlassian.net/wiki" } };
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName("Sheet1"); // Please set the sheet name.
const requests = [{ pasteData: { data: obj.body.storage.value, html: true, coordinate: { sheetId: sheet.getSheetId() } } }];
Sheets.Spreadsheets.batchUpdate({requests}, ss.getId());
// When you want to retrieve the values as an array, please use the following script.
// const array = sheet.getDataRange().getValues();
// console.log(array)
}
When this script is run, the following result is obtained.
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句