From 9d09e72a766b86f31277755a5b9b1c4652e8afac Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Wed, 20 May 2020 14:15:35 -0700 Subject: [PATCH 1/7] Shortcut Sample Addin --- addins/ShortcutSample/Images/Button16x16.png | Bin 0 -> 269 bytes addins/ShortcutSample/Images/Button32x32.png | Bin 0 -> 484 bytes addins/ShortcutSample/Images/Button80x80.png | Bin 0 -> 1018 bytes addins/ShortcutSample/ShortcutSample.xml | 154 +++++++++++++++++++ addins/ShortcutSample/shortcutSample.html | 25 +++ addins/ShortcutSample/shortcuts.js | 133 ++++++++++++++++ addins/ShortcutSample/shortcuts.json | 32 ++++ 7 files changed, 344 insertions(+) create mode 100644 addins/ShortcutSample/Images/Button16x16.png create mode 100644 addins/ShortcutSample/Images/Button32x32.png create mode 100644 addins/ShortcutSample/Images/Button80x80.png create mode 100644 addins/ShortcutSample/ShortcutSample.xml create mode 100644 addins/ShortcutSample/shortcutSample.html create mode 100644 addins/ShortcutSample/shortcuts.js create mode 100644 addins/ShortcutSample/shortcuts.json diff --git a/addins/ShortcutSample/Images/Button16x16.png b/addins/ShortcutSample/Images/Button16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..dd7f2a55fbdbaa799d2e5bc4e294c942d9fc7468 GIT binary patch literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1quc!9|`fjv*HQTQ3~sJ!HVcdLc%VL60X`?17u) z5$+PX7Xk&JM06acFSze1GU=L`M~A+x=Be$)9zXIstaqfw?)$6s{^<2X?d@-lsy`A1n^rsn$c83;AUNcd=cS!a2K{mDv(_J|~a?T6Yd~R3%HfXJjcI)*{p|v7$ z>RwxdZrqjS+t{yY=lqvFc#rqo%@OK<|A-!|@GGyLpql=1d5Zyalc&QmL2nOkplcaC MUHx3vIVCg!05t+)AOHXW literal 0 HcmV?d00001 diff --git a/addins/ShortcutSample/Images/Button32x32.png b/addins/ShortcutSample/Images/Button32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..e2efdb8d00e081133d568031c5f8bcf0be0901ce GIT binary patch literal 484 zcmVPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0eMM8K~z{r?U%7i z13?r;1A-8+va(8LWo6|DSlJ3zsZt5H16Edo-(YLyH`q*J6-Z@eWo2b62!bH!y*p0~ z>z(YIWY#JN4$JJ^_coBt%w(`;WkTGAmvG1K{1YK=!)y2fzu-H(f?Jm8i4ZqofUl4b zZui;*sh200qUkD zcEXJ$#8b$Pg+;t_%=`R6&+uFC(c0TLwXA7@hS{UV8v;*g-)dc{bp1gT^QJ2C$2Iyk9QPgHCT&r^Zo^W&G-~?8KO!|u zTPO2tX8U+v)jRMrv4Zzs<1NnP6Sl59oai}G;oSGb#viz^_+4_kmeyA1IhEtw`NP)( ztXKN|U_0l%OX~3-mKu$PuQfLNdfbwF_(xz5PrajV#oRxdrlJ)3Xf4pldR^E~jQKZUsic z76HxdJ~5@#vlpF~tRYTOwzExJ|Eyz|F3y?yXpgF$`eK>+lQ$k~D7`N8{QjZE6KZSk zoZG|x{&aeuY~!58?CWMfv)C{CuF3r2t8Kh>&u(Zuk$G1$)ztTzbMTz|Z2E_;=I%KA z$@<()zMI=li)~pSF#C3;ug0%m=MHK8)thrVxk5*}cin;cKw-3YYRD_j!Gqx-ld<=^3P#!M1^j)snkyAP<^Sm(^0K&Chp@>{_gSm=;7?h(_6gb z`32%;NA1zynZI$GWYvTZ$JSmws6O?J!^7U-?()jK1AKPc%h|c}e?*y9Mg{YW-z(Vq zW6y`gh{?}ezfO3VyFbi#enfd4|C&!q9jl7o?hW$(U1$4gE~mBl^%bf|V;?gcJdu4F zJ|TPEpDVlmt(84$cTDp{E$`cwYmePen0~3B+qL(J@P@0^$rkC8Wu{6TJ$K78qBOkk z_?q|mQ~o_$ByV(0HD6EbTb2I7u-}K~Y9|{J v*fP~~{!V%RmpmoUf-(j;e@I@s{F#5P{gh*@oXckd^DBd=tDnm{r-UW|>~`K> literal 0 HcmV?d00001 diff --git a/addins/ShortcutSample/ShortcutSample.xml b/addins/ShortcutSample/ShortcutSample.xml new file mode 100644 index 0000000..c33e323 --- /dev/null +++ b/addins/ShortcutSample/ShortcutSample.xml @@ -0,0 +1,154 @@ + + + + + + + + d68dd406-771d-4dfc-ae80-8998b7821972 + + + 1.0.0.0 + OEP Dev Team + en-US + + + + + + + + + + + + + + + + + + + + + + + + + + ReadWriteDocument + + + + + + + + + + + + + + + + + + + + + + <!-- Description of the Getting Started callout. resid points to a LongString resource --> + <Description resid="OEP.GetStarted.Description" /> + + <!-- Point to a url resource which details how the add-in should be used. --> + <LearnMoreUrl resid="OEP.GetStarted.LearnMoreUrl" /> + </GetStarted> + + <!-- PrimaryCommandSurface is the main Office Ribbon. --> + <ExtensionPoint xsi:type="PrimaryCommandSurface"> + <!-- Use OfficeTab to extend an existing Tab. Use CustomTab to create a new tab. --> + <OfficeTab id="TabHome"> + <!-- Ensure you provide a unique id for the group. Recommendation for any IDs is to namespace using your company name. --> + <Group id="OEP.Group1"> + <!-- Label for your group. resid must point to a ShortString resource. --> + <Label resid="OEP.Group1Label" /> + <!-- Icons. Required sizes 16,32,80, optional 20, 24, 40, 48, 64. Strongly recommended to provide all sizes for great UX. --> + <!-- Use PNG icons. All URLs on the resources section must use HTTPS. --> + <Icon> + <bt:Image size="16" resid="OEP.tpicon_16x16" /> + <bt:Image size="32" resid="OEP.tpicon_32x32" /> + <bt:Image size="80" resid="OEP.tpicon_80x80" /> + </Icon> + + <!-- Control. It can be of type "Button" or "Menu". --> + <Control xsi:type="Button" id="OEP.TaskpaneButton"> + <Label resid="OEP.TaskpaneButton.Label" /> + <Supertip> + <!-- ToolTip title. resid must point to a ShortString resource. --> + <Title resid="OEP.TaskpaneButton.Label" /> + <!-- ToolTip description. resid must point to a LongString resource. --> + <Description resid="OEP.TaskpaneButton.Tooltip" /> + </Supertip> + <Icon> + <bt:Image size="16" resid="OEP.tpicon_16x16" /> + <bt:Image size="32" resid="OEP.tpicon_32x32" /> + <bt:Image size="80" resid="OEP.tpicon_80x80" /> + </Icon> + + <!-- This is what happens when the command is triggered (E.g. click on the Ribbon). Supported actions are ExecuteFunction or ShowTaskpane. --> + <Action xsi:type="ShowTaskpane"> + <!-- Provide a url resource id for the location that will be displayed on the task pane. --> + <SourceLocation resid="OEP.SharedRuntime.Url" /> + </Action> + </Control> + </Group> + </OfficeTab> + </ExtensionPoint> + </DesktopFormFactor> + </Host> + </Hosts> + + <!-- You can use resources across hosts and form factors. --> + <Resources> + <bt:Images> + <bt:Image id="OEP.tpicon_16x16" DefaultValue="http://officedev.github.io/custom-functions/addins/ShortcutSample/images/Button16x16.png" /> + <bt:Image id="OEP.tpicon_32x32" DefaultValue="http://officedev.github.io/custom-functions/addins/ShortcutSample/images/Button32x32.png" /> + <bt:Image id="OEP.tpicon_80x80" DefaultValue="http://officedev.github.io/custom-functions/addins/ShortcutSample/images/Button80x80.png" /> + </bt:Images> + <bt:Urls> + <bt:Url id="OEP.SharedRuntime.Url" DefaultValue="http://officedev.github.io/custom-functions/addins/ShortcutSample/shortcutSample.html" /> + <bt:Url id="OEP.GetStarted.LearnMoreUrl" DefaultValue="https://go.microsoft.com/fwlink/?LinkId=276812" /> + </bt:Urls> + <!-- ShortStrings max characters==125. --> + <bt:ShortStrings> + <bt:String id="OEP.TaskpaneButton.Label" DefaultValue="Show Shortcut Sample Taskpane" /> + <bt:String id="OEP.Group1Label" DefaultValue="Shortcut Sample" /> + <bt:String id="OEP.GetStarted.Title" DefaultValue="Shortcut Sample" /> + </bt:ShortStrings> + <!-- LongStrings max characters==250. --> + <bt:LongStrings> + <bt:String id="OEP.TaskpaneButton.Tooltip" DefaultValue="Click to Show a Taskpane" /> + <bt:String id="OEP.GetStarted.Description" DefaultValue="Your sample add-in loaded succesfully. Go to the HOME tab and click the 'Show Taskpane' button to get started." /> + </bt:LongStrings> + </Resources> + <WebApplicationInfo> + <Id>17a38bc9-89bc-4b24-9a00-cbea39b3cb6a</Id> + <Resource>api://www.oepbuild2017.com/prodapp</Resource> + <Scopes> + <Scope>profile</Scope> + <Scope>files.read.all</Scope> + <Scope>user.read</Scope> + <Scope>offline_access</Scope> + </Scopes> + </WebApplicationInfo> + </VersionOverrides> + <!-- End Add-in Commands Mode integration. --> + <ExtendedOverridesUrl DefaultValue="http://officedev.github.io/custom-functions/addins/ShortcutSample/shortcuts.json"></ExtendedOverridesUrl> + <!-- End Add-in Commands Mode integration. --> +</OfficeApp> diff --git a/addins/ShortcutSample/shortcutSample.html b/addins/ShortcutSample/shortcutSample.html new file mode 100644 index 0000000..f3e7e0e --- /dev/null +++ b/addins/ShortcutSample/shortcutSample.html @@ -0,0 +1,25 @@ +<!DOCTYPE html> +<html> +<head> + <meta charset="UTF-8" /> + <meta http-equiv="X-UA-Compatible" content="IE=Edge" /> + <meta http-equiv="Expires" content="0" /> + <title>Shortcut Sample + + + + +
+

Thank you for trying shortcuts for Excel! Try using the shortcuts to execute the following functions!

+
    +
  • Show Taskpane: CTRL+SHIFT+UP
  • +
  • Hide Taskpane: CTRL+SHIFT+DOWN
  • +
  • Set Bold: CTRL+SHIFT+B
  • +
  • Set Italic: CTRL+SHIFT+I
  • +
  • Set Color: CTRL+SHIFT+O
  • +
  • Set Underline: CTRL+SHIFT+U
  • +
  • Set Date Format: CTRL+SHIFT+D
  • +
+
+ + \ No newline at end of file diff --git a/addins/ShortcutSample/shortcuts.js b/addins/ShortcutSample/shortcuts.js new file mode 100644 index 0000000..eba5e6b --- /dev/null +++ b/addins/ShortcutSample/shortcuts.js @@ -0,0 +1,133 @@ +Office.actions.associate('SHOWTASKPANE', function () { + return Office.addin.showAsTaskpane() + .then(function () { + return; + }) + .catch(function (error) { + return error.code; + }); +}); + +Office.actions.associate('HIDETASKPANE', function () { + return Office.addin.hide() + .then(function () { + return; + }) + .catch(function (error) { + return error.code; + }); +}); + +Office.actions.associate('SETBOLD', function () { + var context = new Excel.RequestContext(); + var range = context.workbook.getSelectedRange(); + var rangeFormat = range.format; + rangeFormat.font.load(); + return context.sync() + .then(function () { + var rangeTarget = context.workbook.getSelectedRange(); + if (rangeFormat.font.bold) { + rangeTarget.format.font.bold = false; + } else { + rangeTarget.format.font.bold = true; + } + return context.sync(); + }); +}); + +Office.actions.associate('SETITALIC', function () { + var context = new Excel.RequestContext(); + var range = context.workbook.getSelectedRange(); + var rangeFormat = range.format; + rangeFormat.font.load(); + return context.sync() + .then(function () { + var rangeTarget = context.workbook.getSelectedRange(); + if (rangeFormat.font.italic) { + rangeTarget.format.font.italic = false; + } else { + rangeTarget.format.font.italic = true; + } + return context.sync(); + }); +}); + +Office.actions.associate('SETUNDERLINE', function () { + var context = new Excel.RequestContext(); + var range = context.workbook.getSelectedRange(); + var rangeFormat = range.format; + rangeFormat.font.load(); + return context.sync() + .then(function () { + var rangeTarget = context.workbook.getSelectedRange(); + if (rangeFormat.font.underline !== "None") { + rangeTarget.format.font.underline = "None"; + } else { + rangeTarget.format.font.underline = "Single"; + } + return context.sync(); + }); +}); + +Office.actions.associate('SETCOLOR', function () { + var context = new Excel.RequestContext(); + var range = context.workbook.getSelectedRange(); + var rangeFormat = range.format; + rangeFormat.fill.load(); + var colors = ["#FFFFFF", "#C7CC7A", "#7560BA", "#9DD9D2", "#FFE1A8", "#E26D5C"]; + return context.sync().then(function () { + var rangeTarget = context.workbook.getSelectedRange(); + var currentColor = -1; + for (var i = 0; i < colors.length; i++) { + if (colors[i] == rangeFormat.fill.color) { + currentColor = i; + break; + } + } + if (currentColor == -1) { + currentColor = 0; + } + else if (currentColor == colors.length - 1) { + currentColor = 0; + } + else { + currentColor++; + } + rangeTarget.format.fill.color = colors[currentColor]; + return context.sync(); + }); +}); + +Office.actions.associate('SETDATEFORMAT', function () { + var context = new Excel.RequestContext(); + var range = context.workbook.getSelectedRange(); + range.load(); + return context.sync().then(function () { + var rangeFormat = range.numberFormat; + var dateFormats = ["m/d/yy", "mm/dd/yy", "mm/dd/yyyy", "m/d/yyyy", "ddd mm/dd/yyyy", "ddddd, mmm dd, yyyy"]; + var result = []; + var rangeTarget = context.workbook.getSelectedRange(); + var currentFormat = -1; + for (var i = 0; i < dateFormats.length; i++) { + if (dateFormats[i] == rangeFormat[0][0]) { + currentFormat = i; + break; + } + } + if (currentFormat == -1) { + currentFormat = 0; + } else if (currentFormat == dateFormats.length - 1) { + currentFormat = 0; + } else { + currentFormat++; + } + for (var j = 0; j < range.rowCount; j++) { + result[j] = []; + for (var n = 0; n < range.columnCount; n++) { + result[j][n] = dateFormats[currentFormat]; + } + } + rangeTarget.numberFormat = result; + return context.sync(); + }); +}); diff --git a/addins/ShortcutSample/shortcuts.json b/addins/ShortcutSample/shortcuts.json new file mode 100644 index 0000000..61e7cf2 --- /dev/null +++ b/addins/ShortcutSample/shortcuts.json @@ -0,0 +1,32 @@ +{ + "shortcuts": [ + { + "id": "SHOWTASKPANE", + "key": "CTRL+SHIFT+UP" + }, + { + "id": "HIDETASKPANE", + "key": "CTRL+SHIFT+DOWN" + }, + { + "id": "SETBOLD", + "key": "CTRL+SHIFT+B" + }, + { + "id": "SETITALIC", + "key": "CTRL+SHIFT+I" + }, + { + "id": "SETCOLOR", + "key": "CTRL+SHIFT+O" + }, + { + "id": "SETUNDERLINE", + "key": "CTRL+SHIFT+U" + }, + { + "id": "SETDATEFORMAT", + "key": "CTRL+SHIFT+D" + } + ] +} From 4a8158aee8d4c784c5858fb522720262979725f9 Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Thu, 21 May 2020 01:45:32 -0700 Subject: [PATCH 2/7] Added README and changed manifest --- addins/ShortcutSample/README.md.txt | 6 ++++++ addins/ShortcutSample/ShortcutSample.xml | 14 ++------------ 2 files changed, 8 insertions(+), 12 deletions(-) create mode 100644 addins/ShortcutSample/README.md.txt diff --git a/addins/ShortcutSample/README.md.txt b/addins/ShortcutSample/README.md.txt new file mode 100644 index 0000000..fa7156d --- /dev/null +++ b/addins/ShortcutSample/README.md.txt @@ -0,0 +1,6 @@ +# Purpose +This add-in is used to test trigger functions with shortcut keys. The add-in contains: +- Shortcuts + +# Maintainers +nicheungmsft \ No newline at end of file diff --git a/addins/ShortcutSample/ShortcutSample.xml b/addins/ShortcutSample/ShortcutSample.xml index c33e323..56b7b74 100644 --- a/addins/ShortcutSample/ShortcutSample.xml +++ b/addins/ShortcutSample/ShortcutSample.xml @@ -1,5 +1,5 @@ - + 1.0.0.0 - OEP Dev Team + Microsoft en-US @@ -137,16 +137,6 @@ - - 17a38bc9-89bc-4b24-9a00-cbea39b3cb6a - api://www.oepbuild2017.com/prodapp - - profile - files.read.all - user.read - offline_access - -
From 95deac8efcfd0044f4fab11f174a61fbceaa7d83 Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Thu, 21 May 2020 01:46:41 -0700 Subject: [PATCH 3/7] Added README and changed manifest: --- addins/ShortcutSample/{README.md.txt => README.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename addins/ShortcutSample/{README.md.txt => README.md} (100%) diff --git a/addins/ShortcutSample/README.md.txt b/addins/ShortcutSample/README.md similarity index 100% rename from addins/ShortcutSample/README.md.txt rename to addins/ShortcutSample/README.md From 5c052feb1d07141fb9b926a09c0975cff4909bb1 Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Thu, 21 May 2020 14:30:46 -0700 Subject: [PATCH 4/7] changed display name --- addins/ShortcutSample/ShortcutSample.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/addins/ShortcutSample/ShortcutSample.xml b/addins/ShortcutSample/ShortcutSample.xml index 56b7b74..814273e 100644 --- a/addins/ShortcutSample/ShortcutSample.xml +++ b/addins/ShortcutSample/ShortcutSample.xml @@ -18,8 +18,8 @@ en-US - - + + From b82ce368e77ed1cbbe428c6f5338e8b041996f92 Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Fri, 22 May 2020 13:52:02 -0700 Subject: [PATCH 5/7] added private cdn that includes shortcut logic --- addins/ShortcutSample/shortcutSample.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addins/ShortcutSample/shortcutSample.html b/addins/ShortcutSample/shortcutSample.html index f3e7e0e..2a171e3 100644 --- a/addins/ShortcutSample/shortcutSample.html +++ b/addins/ShortcutSample/shortcutSample.html @@ -5,7 +5,7 @@ Shortcut Sample - + From 0d8ecaca6e6bb5a6d3caef1001a8bd833deb3bbe Mon Sep 17 00:00:00 2001 From: Nicole Cheung Date: Tue, 26 May 2020 15:22:53 -0700 Subject: [PATCH 6/7] added function file --- addins/ShortcutSample/ShortcutSample.xml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/addins/ShortcutSample/ShortcutSample.xml b/addins/ShortcutSample/ShortcutSample.xml index 814273e..caca45b 100644 --- a/addins/ShortcutSample/ShortcutSample.xml +++ b/addins/ShortcutSample/ShortcutSample.xml @@ -70,12 +70,16 @@ - - - - - - + + + + + + + + +
diff --git a/addins/ShortcutSample/shortcutSample.html b/addins/ShortcutSample/shortcutSample.html index 2a171e3..55dbf69 100644 --- a/addins/ShortcutSample/shortcutSample.html +++ b/addins/ShortcutSample/shortcutSample.html @@ -5,7 +5,7 @@ Shortcut Sample - +