Office2016(Word2016, Excel2016) JavaScript API를 확인하는 방법
소개
Office 추가 기능을 개발할 때 JavaScript API의 간단한 샘플을 GitHub - OfficeDev/office-js-snipet-explorer에서 확인할 수 있습니다.
이 안에 있는 Snipet Explorer
Office 2016 JavaScript API Snippet Explorer (Preview)
Office 2016 JavaScript API Snippet Explorer (Preview)
는 목록을 선택하여 소스 코드 샘플을 확인할 수 있습니다.
예를 들면
Office 2016 JavaScript API Snippet Explorer (Preview) 에서,
"-- choose a gruop --"에서 Range를 선택하면
"-- choose a snipet --"후보가 좁혀집니다.
"-- choose a snipet --"에서 Set Number Format in Range를 선택합니다.
그러면
Set the number format for cell A1 in the active sheet
sample.jsExcel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "d-mmm";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
라고 표시되었습니다.
활성 시트의 셀 A1에 날짜 14-Mar(예: 2017/8/23을 셀에 입력하면 14-Mar로 표시됨) 형식의 형식을 설정하는 소스 코드 샘플이 표시됩니다.
구체적으로는
Visual Studio를 시작하고 새 프로젝트를 만들고 Office/SharePoint==>추가 기능=>Excel 추가 기능을 선택합니다.
이름을 결정합니다. OK를 누릅니다.
이번에는 새 기능을 Excel에 추가 (Taskpain)를 선택하고 마침을 누릅니다.
솔루션 탐색기에서 Home.js를 왼쪽 두 번 클릭하여 JavaScript를 엽니다.
샘플 코드가 입력되었습니다.
버튼을 눌렀을 때의 동작이 되는, 56행부터 91행째를 발췌합니다.
Home.js function hightlightHighestValue() {
// Excel オブジェクト モデルに対してバッチ操作を実行します
Excel.run(function (ctx) {
// 選択された範囲に対するプロキシ オブジェクトを作成し、そのプロパティを読み込みます
var sourceRange = ctx.workbook.getSelectedRange().load("values, rowCount, columnCount");
// キューに入れるコマンドを実行し、タスクの完了を示すために Promise を返します
return ctx.sync()
.then(function () {
var highestRow = 0;
var highestCol = 0;
var highestValue = sourceRange.values[0][0];
// セルを検索して強調表示します
for (var i = 0; i < sourceRange.rowCount; i++) {
for (var j = 0; j < sourceRange.columnCount; j++) {
if (!isNaN(sourceRange.values[i][j]) && sourceRange.values[i][j] > highestValue) {
highestRow = i;
highestCol = j;
highestValue = sourceRange.values[i][j];
}
}
}
cellToHighlight = sourceRange.getCell(highestRow, highestCol);
sourceRange.worksheet.getUsedRange().format.fill.clear();
sourceRange.worksheet.getUsedRange().format.font.bold = false;
// セルを強調表示
cellToHighlight.format.fill.color = "orange";
cellToHighlight.format.font.bold = true;
})
.then(ctx.sync);
})
.catch(errorHandler);
}
여기에 이전 스니펫 탐색기에 표시된 소스 코드(Sample.js의 해당 부분)를 붙여넣습니다.
Home.js function hightlightHighestValue() {
Excel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "d-mmm";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
}
이렇게 붙여넣고 [▶시작]을 누릅니다. Taskpane을 누릅니다.
샘플 코드를 그대로 사용하고 있으므로 다른 동작은 신경쓰지 않고,
[강조 표시!]를 누릅니다.
셀 A1의 서식이므로 외형에 아무런 변화가 없지만 셀 A1에 날짜를 입력하면
Office 2016 JavaScript API Snippet Explorer (Preview) 에서,
"-- choose a gruop --"에서 Range를 선택하면
"-- choose a snipet --"후보가 좁혀집니다.
"-- choose a snipet --"에서 Set Number Format in Range를 선택합니다.
그러면
Set the number format for cell A1 in the active sheet
sample.js
Excel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "d-mmm";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
라고 표시되었습니다.
활성 시트의 셀 A1에 날짜 14-Mar(예: 2017/8/23을 셀에 입력하면 14-Mar로 표시됨) 형식의 형식을 설정하는 소스 코드 샘플이 표시됩니다.
구체적으로는
Visual Studio를 시작하고 새 프로젝트를 만들고 Office/SharePoint==>추가 기능=>Excel 추가 기능을 선택합니다.
이름을 결정합니다. OK를 누릅니다.
이번에는 새 기능을 Excel에 추가 (Taskpain)를 선택하고 마침을 누릅니다.
솔루션 탐색기에서 Home.js를 왼쪽 두 번 클릭하여 JavaScript를 엽니다.
샘플 코드가 입력되었습니다.
버튼을 눌렀을 때의 동작이 되는, 56행부터 91행째를 발췌합니다.
Home.js function hightlightHighestValue() {
// Excel オブジェクト モデルに対してバッチ操作を実行します
Excel.run(function (ctx) {
// 選択された範囲に対するプロキシ オブジェクトを作成し、そのプロパティを読み込みます
var sourceRange = ctx.workbook.getSelectedRange().load("values, rowCount, columnCount");
// キューに入れるコマンドを実行し、タスクの完了を示すために Promise を返します
return ctx.sync()
.then(function () {
var highestRow = 0;
var highestCol = 0;
var highestValue = sourceRange.values[0][0];
// セルを検索して強調表示します
for (var i = 0; i < sourceRange.rowCount; i++) {
for (var j = 0; j < sourceRange.columnCount; j++) {
if (!isNaN(sourceRange.values[i][j]) && sourceRange.values[i][j] > highestValue) {
highestRow = i;
highestCol = j;
highestValue = sourceRange.values[i][j];
}
}
}
cellToHighlight = sourceRange.getCell(highestRow, highestCol);
sourceRange.worksheet.getUsedRange().format.fill.clear();
sourceRange.worksheet.getUsedRange().format.font.bold = false;
// セルを強調表示
cellToHighlight.format.fill.color = "orange";
cellToHighlight.format.font.bold = true;
})
.then(ctx.sync);
})
.catch(errorHandler);
}
여기에 이전 스니펫 탐색기에 표시된 소스 코드(Sample.js의 해당 부분)를 붙여넣습니다.
Home.js function hightlightHighestValue() {
Excel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "d-mmm";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
}
이렇게 붙여넣고 [▶시작]을 누릅니다. Taskpane을 누릅니다.
샘플 코드를 그대로 사용하고 있으므로 다른 동작은 신경쓰지 않고,
[강조 표시!]를 누릅니다.
셀 A1의 서식이므로 외형에 아무런 변화가 없지만 셀 A1에 날짜를 입력하면
function hightlightHighestValue() {
// Excel オブジェクト モデルに対してバッチ操作を実行します
Excel.run(function (ctx) {
// 選択された範囲に対するプロキシ オブジェクトを作成し、そのプロパティを読み込みます
var sourceRange = ctx.workbook.getSelectedRange().load("values, rowCount, columnCount");
// キューに入れるコマンドを実行し、タスクの完了を示すために Promise を返します
return ctx.sync()
.then(function () {
var highestRow = 0;
var highestCol = 0;
var highestValue = sourceRange.values[0][0];
// セルを検索して強調表示します
for (var i = 0; i < sourceRange.rowCount; i++) {
for (var j = 0; j < sourceRange.columnCount; j++) {
if (!isNaN(sourceRange.values[i][j]) && sourceRange.values[i][j] > highestValue) {
highestRow = i;
highestCol = j;
highestValue = sourceRange.values[i][j];
}
}
}
cellToHighlight = sourceRange.getCell(highestRow, highestCol);
sourceRange.worksheet.getUsedRange().format.fill.clear();
sourceRange.worksheet.getUsedRange().format.font.bold = false;
// セルを強調表示
cellToHighlight.format.fill.color = "orange";
cellToHighlight.format.font.bold = true;
})
.then(ctx.sync);
})
.catch(errorHandler);
}
function hightlightHighestValue() {
Excel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "d-mmm";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
}
그리고 프로그램대로 반영되어 있음을 알 수 있습니다.
그러나 사용자 정의이므로 d-mmm을 [$-en-US]d-mmm;@로 변경합니다.
Home.js
function hightlightHighestValue() {
Excel.run(function (ctx) {
ctx.workbook.worksheets.getActiveWorksheet().getRange("A1").numberFormat = "[$-en-US]d-mmm;@";
return ctx.sync();
}).catch(function (error) {
console.log(error);
});
}
아까처럼
[강조 표시!]를 눌러 연월일을 입력한 화면이 다음과 같습니다.
이번에는
되었습니다.
날짜 형식에서는 로캘을 조정해야 하지만 이런 식으로 Office 추가 기능을 개발할 수 있습니다.
셀 서식은 새 JavaScriptAPI에 구현되어 있으므로 Excel2013에서는 작동하지 않습니다.
이 샘플 프로그램의 기본 상태는 Excel 2013에서 다른 동작 (버튼이 [강조 표시!] 대신 [표시!])이며, [표시!] 버튼으로 $('#highlight-button').click( displaySelectedCells);가 실행되도록 잘라내고 있습니다.
서식을 설정할 수 없는 경우, 대체 방법이 없으면, 이전의 기사 Excel2016 이상에서 실행되는 Excel 추가 기능 개발 의 애드인 매니페스트 추기도 실시해, Excel2013 으로 실행할 수 없게 하는 대응도 필요하게 됩니다.
참고
GitHub - OfficeDev/office-js-snipet-explorer
Word 버전
Office 2016 JavaScript API Snippet Explorer (Preview)
Excel 버전
Office 2016 JavaScript API Snippet Explorer (Preview)
결론
Snippet Explorer는 목록에서 원하는 작업을 선택하는 것만으로 소스 코드를 확인할 수 있으므로 사용하기 쉽다고 느꼈습니다.
Preview판이므로, 언제까지 사용할 수 있을지는 모릅니다만.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(Office2016(Word2016, Excel2016) JavaScript API를 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Snippet Explorer는 목록에서 원하는 작업을 선택하는 것만으로 소스 코드를 확인할 수 있으므로 사용하기 쉽다고 느꼈습니다.
Preview판이므로, 언제까지 사용할 수 있을지는 모릅니다만.
끝까지 읽어 주셔서 감사합니다.
Reference
이 문제에 관하여(Office2016(Word2016, Excel2016) JavaScript API를 확인하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/y__na_ka_ya_ma/items/2575e79248978ff7828d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)