๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

etc.

OneNote ์ถ”๊ฐ€ ๊ธฐ๋Šฅ (Add-in) ๋งŒ๋“ค๊ธฐ - JavaScript API

์šฐ๋ฆฌ ํšŒ์‚ฌ๋Š” ํŒ€ ๋…ธํŠธ๋ฅผ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด Microsoft Office์˜ OneNote๋ฅผ ์ž์ฃผ ์‚ฌ์šฉํ•œ๋‹ค. ์ตœ๊ทผ OneNote์— ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•˜๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ์–˜๊ธฐ๊ฐ€ ๋‚˜์™”๊ณ , ๊ทธ๊ฑธ ๋‚ด๊ฐ€ ๋„๋งก์•„ ํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ์ธํ„ฐ๋„ท์— ์ž๋ฃŒ๊ฐ€ ๋งŽ์ง€ ์•Š์•„์„œ ์ƒ๊ฐ๋ณด๋‹ค ์• ๋ฅผ ๋จน์—ˆ๋‹ค. ๊ตฌ๊ธ€์— ๊ฒ€์ƒ‰ํ•ด๋ณด๋ฉด Word, Excel, PowerPoint์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ๊ณผ ๊ด€๋ จ๋œ ๊ธ€๋“ค์€ ๋งŽ์ง€๋งŒ OneNote์™€ ๊ด€๋ จ๋œ ์ž๋ฃŒ๋Š” ์ฐพ์•„๋ณด๊ธฐ ํž˜๋“ค์—ˆ๋‹ค. ๊ทธ๋„ ๊ทธ๋Ÿด ๊ฒƒ์ด ์‹ค์ œ๋กœ OneNote์—์„œ์˜ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ์€ Word๋‚˜ Excel ๋ณด๋‹ค ํ›จ์”ฌ ์ œํ•œ์ ์ด์—ˆ๋‹ค. VBA๋ฅผ ์ด์šฉํ•œ ๊ฐ„๋‹จํ•œ ๋งคํฌ๋กœ๋ฅผ ๋งŒ๋“ค ์ˆ˜๋„ ์—†๊ณ , VSTO๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค (์—ญ์‚ฌ๊ฐ€ ๊ธธ์ง€ ์•Š์•„์„œ ๊ทธ๋Ÿฐ๊ฐ€..?)

 

์ด๊ฒƒ ์ €๊ฒƒ ์ฐพ์•„๋ณธ ๊ฒฐ๊ณผ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ์ฐพ์•˜๋‹ค.

  1. JavaScript API
    • Office Add-ins ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ผ๋ถ€๋กœ, ๊ณต์‹ ์‚ฌ์ดํŠธ์—์„œ ๊ฐ€์žฅ ๋จผ์ € ์ฐพ์„ ์ˆ˜ ์žˆ๋Š” ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. 
    • ์›น ๊ธฐ์ˆ  (HTML, CSS, JavaScript)์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค.
    • Windows, macOS, ์›น ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์—์„œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.
  2. COM Add-ins
    • ์ข€ ๋” ์ „ํ†ต์ ์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. (๊ทธ๋งŒํผ ๊ฐœ๋ฐœ๋„ ๋ณต์žกํ•˜๊ณ  ์–ด๋ ต์Šต๋‹ˆ๋‹ค.)
    • .NET๊ณผ ๊ฐ™์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
    • ์ฃผ๋กœ Windows ํ™˜๊ฒฝ์— ํŠนํ™”๋˜์–ด ์žˆ์œผ๋ฉฐ, ๋ฐ์ŠคํŠธํ†ฑ ๋ฒ„์ „์˜ Office ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

์ฆ‰, ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์—์„œ๋Š” COM Add-ins๋ฅผ, ๊ทธ ์™ธ์—๋Š” JavaScript API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™๋‹ค.

 

์ด๋ฒˆ ๊ธ€์—์„œ๋Š” JavaScript API๋ฅผ ์ด์šฉํ•œ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด๊ณ , ๋‚˜์ค‘์— ๊ธฐํšŒ๊ฐ€ ๋˜๋ฉด COM Add-ins๋„ ์ž‘์„ฑํ•  ๊ณ„ํš์ด๋‹ค.


์ค€๋น„๋ฌผ

  • Node.js (LTS ๋ฒ„์ „)
  • Yeoman, Yeoman generator for Office Add-ins 
npm install -g yo generator-office
  • OneNote ์›น๋ฒ„์ „ (๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์—์„œ๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค!)

ํ”„๋กœ์ ํŠธ ์ƒ์„ฑํ•˜๊ธฐ

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•ด์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์„ธ์š”. 

yo office

 

 

๊ทธ๋Ÿฌ๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ™”๋ฉด์ด ๋‚˜์˜ฌํ…๋ฐ, ์›ํ•˜์‹œ๋Š” ๊ธฐ๋Šฅ์— ๋งž์ถฐ์„œ ์„ ํƒํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” "Office Add-in Task Pane Project" → "JavaScript" → [ํ”„๋กœ์ ํŠธ ์ด๋ฆ„] → "OneNote". ์ด๋ ‡๊ฒŒ ์„ ํƒํ–ˆ๋„ค์š”.

 

๊ทธ๋Ÿผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ƒ์„ฑ ๋ ํ…๋ฐ ๋ˆˆ์—ฌ๊ฒจ๋ณผ๋งŒํ•œ ํŒŒ์ผ๋“ค์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ./manifest.xml ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“ค ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์˜ ์„ธํŒ…๊ฐ’์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ํ•ด๋‹น ํŒŒ์ผ์„ ๋ถˆ๋Ÿฌ์˜ค์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. 
  • ./src/taskpane ์šฐ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์ˆ˜์ •ํ•  html, css, js ํŒŒ์ผ์ด ๋“ค์–ด์žˆ์Šต๋‹ˆ๋‹ค. 

๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ

์ด์ œ taskpane ํด๋”์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์— ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์ €๋Š” ํŽ˜์ด์ง€์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ์ฃผ๋Š” ๊ฐ„๋‹จํ•œ ์ž‘์—…์ฐฝ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค. 

 

taskpane.html

๋”๋ณด๊ธฐ
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=Edge" />
    <title>Page Counter</title>
    <script type="text/javascript" src="https://appsforoffice.microsoft.com/lib/1.1/hosted/office.js"></script>
    <script src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-2.2.1.min.js"></script>
    <link href="taskpane.css" rel="stylesheet" type="text/css" />
</head>

<body>
    <div id="header">
        <h1 id="title">Page Counter</h1>
    </div>
    <div id="body">
        <span id="button">Get count</span>
        <div>
            <span id="pageCount"></span>
        </div>
    </div>
</body>

</html>

taskpane.css

๋”๋ณด๊ธฐ
body {
    width: 100%;
    height: 100%;
    font-family: 'Arial', sans-serif;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    background-color: #fff;
}

#header {
    width: 100%;
    background-color: #761ba7;
    color: #fff;
    text-align: center;
    padding: 20px 0;
}

#body {
    padding: 20px;
}

#button {
    background-color: #c461e4;
    border: none;
    color: white;
    padding: 15px 32px;
    text-align: center;
    text-decoration: none;
    display: inline-block;
    font-size: 16px;
    margin: 4px 2px;
    cursor: pointer;
    border-radius: 25px;
    box-shadow: 0 9px #999;
    transition-duration: 0.4s;
  }
  
  #button:hover {
    background-color: #8f2fb9;
    box-shadow: 0 5px #666;
    transform: translateY(-4px);
  }
  
  #button:active {
    background-color: #8f2fb9;
    box-shadow: 0 2px #666;
    transform: translateY(4px);
  }
  

#pageCount {
    display: block;
    text-align: center;
    margin-top: 20px;
    font-size: 16px;
    color: #333;
}

taskpane.js

๋”๋ณด๊ธฐ
Office.onReady((info) => {
  if (info.host === Office.HostType.OneNote) {
    document.getElementById("button").onclick = getPageCount;
  }
});

export async function getPageCount() {
  OneNote.run(function (context) {
    var pages = context.application.getActiveSection().pages;           
    pages.load('id,title');

    return context.sync()
      .then(function () {                
        var pageCount = 0;
        $.each(pages.items, function (index, object) {
          pageCount++;
        });
        $('#pageCount').text(pageCount + ' pages');
      })
      .catch(function (error) {
        onError(error);
      });
  });
}

function onError(error) {
  console.log("Error: " + error);
}

JavaScript API์˜ ๊ฐ์ฒด ๋ชจ๋ธ๊ณผ ๋ฉ”์„œ๋“œ๋“ค์€ ๊ณต์‹ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


์ถ”๊ฐ€ ๊ธฐ๋Šฅ ์‹คํ–‰ํ•ด๋ณด๊ธฐ

Office Add-ins๊ฐ€ ์›น ๊ธฐ๋ฐ˜์ด๋ผ ๋จผ์ € ์›น ์„œ๋ฒ„๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ„๋‹จํžˆ ํ…Œ์ŠคํŠธ ๋ชฉ์ ์œผ๋กœ๋Š” ๋กœ์ปฌ ์„œ๋ฒ„๋ฅผ ๋Œ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

cd [ํ”„๋กœ์ ํŠธ ํด๋” ๊ฒฝ๋กœ]
npm run dev-server

 

์„œ๋ฒ„๋ฅผ ์‹คํ–‰์‹œํ‚ค๊ณ  OneNote ์›น์— ๋“ค์–ด๊ฐ€์„œ

Insert → Office Add-ins  → Update My Add-in → Browse → manifest.xml ์ถ”๊ฐ€

ํ•˜์‹œ๋ฉด Home ํƒญ์—์„œ Show Taskpane์„ ํ†ตํ•ด ์•„๊นŒ ๋งŒ๋“  ์ž‘์—…์ฐฝ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 


Office Add-ins์˜ ๋ฌธ์ œ์ 

  1. ์›น ์„œ๋ฒ„ ๋˜๋Š” ํด๋ผ์šฐ๋“œ ๊ธฐ๋ฐ˜ ํ˜ธ์ŠคํŒ… ์„œ๋น„์Šค๊ฐ€ ํ•„์š”ํ•˜๋‹ค. 
  2. ๋ฐ์Šคํฌํ†ฑ ๋ฒ„์ „์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€. (OneNote 2016 ์ดํ›„ ๋ฒ„์ „์—์„œ๋Š” ์ง€์›๋œ๋‹ค ํ•˜๋„ค์š”)

์‚ฌ์‹ค ์œ„ ๋‘ ๊ฐ€์ง€ ๋ฌธ์ œ์  ๋•Œ๋ฌธ์— ์ €ํฌ๋„ Office Add-ins๋ฅผ ๋ฒ„๋ฆฌ๊ณ  COM Add-ins๋กœ ๋„˜์–ด๊ฐ”๋„ค์š”.. 

 

 

์ฐธ๊ณ  ์ž๋ฃŒ:

https://learn.microsoft.com/en-us/office/dev/add-ins/onenote/

 

๋ฐ˜์‘ํ˜•