Last active
June 15, 2020 20:07
-
-
Save davecra/32299ea09df34412487b6740269a2e36 to your computer and use it in GitHub Desktop.
This is a function from a Content Add-in looks for a specific customXMLPart in the document as a message from a TaskPane Add-in
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Office.initialize = function(reason) { | |
// background thread checker | |
window.setInterval(() => { checkForPart(); }, 1000); | |
} | |
const ns = "http://pfe.microsoft.com/excelpoc/1.0"; | |
const xml = "<message xmlns='http://pfe.microsoft.com/excelpoc/1.0'>" + | |
"<sentby>[who]</sentby>" + | |
"<info>[data]</info>" + | |
"</message>"; | |
const from_tp = "TASKPANE ADD-IN"; | |
function checkForPart() { | |
Excel.run(function(context) { | |
/**@type {Excel.CustomXmlPartScopedCollection} */ | |
var customXmlParts = context.workbook.customXmlParts.getByNamespace(ns); | |
customXmlParts.load(); | |
return context.sync().then(function () { | |
if(customXmlParts.items.length > 0) { | |
/**@type {OfficeExtension.ClientResult<string>} */ | |
var xmlData = customXmlParts.items[0].getXml(); | |
context.sync().then(function() { | |
/**@type {DOMParser} */ | |
var parser = new window.DOMParser(); | |
/**@type {Document} */ | |
var xmlDoc = parser.parseFromString(xmlData.value, "text/xml"); | |
/**@type {Element} */ | |
var who = xmlDoc.getElementsByTagName("sentby")[0]; | |
/**@type {Element} */ | |
var data = xmlDoc.getElementsByTagName("info")[0]; | |
document.getElementById("message").innerText = who.innerHTML; | |
if(who.innerHTML == from_tp) { | |
// write tot he pane | |
var dt = new Date(); | |
var currentTime = pad(dt.getHours(),2) + ":" + pad(dt.getMinutes(),2) + ":" + pad(dt.getSeconds(),2); | |
// update a DIV on the page | |
document.getElementById("message").innerHTML = "<p>Message sent on " + | |
currentTime + | |
" by " + who.innerHTML + | |
" and the message is " + data.innerHTML; | |
// now we delete the part | |
customXmlParts.items[0].delete(); | |
return context.sync(); | |
} | |
}); | |
} | |
}); | |
}); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment