새 창에서 데모를 열어 디자이너 열기
SJS.AI.TRANSLATE 함수는 지정된 언어에 따라 배열을 번역할 수 있습니다. 예:
인수
필수
설명
array
Y
번역할 배열 또는 범위
language
Y
지정된 언어
SJS.AI.QUERY 함수는 프롬프트 텍스트와 선택적 워크시트 데이터를 AI 모델에 보내며, 여러 프롬프트/데이터 쌍을 지원합니다. 예:
인수
필수
설명
prompt1
Y
AI 모델에 작업을 설명하거나 질문하는 텍스트
data1
N
AI 모델에 컨텍스트나 데이터를 제공하는 선택적 셀 또는 범위
prompt2, data2, ...
N
필요에 따라 추가할 수 있는 프롬프트 텍스트와 워크시트 범위
사용 예:
SJS.AI.TEXTSENTIMENT 함수는 텍스트의 감정을 긍정, 부정 또는 중립으로 반환합니다. 예:
인수
필수
설명
array
Y
분석할 배열 또는 범위
positive
Y
텍스트 감정이 긍정적일 경우 반환 값
negative
Y
텍스트 감정이 부정적일 경우 반환 값
neutral
N
텍스트 감정이 중립인 경우 반환 값
AI 생성 콘텐츠에 대한 면책 조항
1. 콘텐츠 생성 위험
본 서비스는 사용자가 주입한 제3자 AI 모델을 활용하여 출력을 생성합니다. 모델의 구조와 학습 데이터의 한계로 인해 결과물에는 부정확한 내용, 누락 또는 오해의 소지가 있을 수 있습니다. 저희는 프롬프트 엔지니어링과 기술적 제약을 통해 출력을 최적화하고 있지만, 모델 결함으로 인한 오류 위험을 완전히 제거할 수는 없습니다.
2. 사용자 검증 의무
본 서비스를 이용함으로써 귀하는 다음 사항에 동의하고 이를 준수할 것을 약속합니다:
모든 생성된 콘텐츠를 수동으로 검토할 것
검증되지 않은 출력을 법률, 의료, 금융 등 고위험 분야에서 사용하지 않을 것
생성된 콘텐츠에 의존하여 발생한 모든 직접적 또는 간접적 손실은 전적으로 사용자 책임임
3. 기술적 한계
우리는 다음과 같은 상황에 대해 책임지지 않습니다:
제3자 모델 결함 또는 논리적 오류로 인한 출력 실패
오류 복구 메커니즘에서 오류를 성공적으로 복구하지 못한 경우
현재 AI 기술의 본질적인 기술적 한계
4. 지식재산권 준수
귀하는 다음 사항을 보장해야 합니다:
주입된 모델/콘텐츠가 제3자의 권리를 침해하지 않을 것
본 서비스를 통해 불법 또는 민감한 자료를 처리하지 않을 것
모델 제공자의 지식재산권 관련 약관을 준수할 것
5. 약관 업데이트
우리는 다음과 같은 사유로 본 약관을 수정할 권리를 보유합니다:
기술 발전 (예: 새로운 AI 안전 프로토콜)
법규 변경 (예: AI 거버넌스 프레임워크 업데이트)
서비스 구조 개선
let spreadNS = GC.Spread.Sheets;
let config = GC.Spread.Sheets.Designer.DefaultConfig;
window.onload = function () {
const spread = createSpreadAndDesigner();
injectAI(spread);
initSpread(spread);
};
function createSpreadAndDesigner() {
const demoHost = document.getElementById("demo-host");
if (window !== top) {
const spread = new GC.Spread.Sheets.Workbook(demoHost, { sheetCount: 2 });
return spread;
} else {
const designer = new GC.Spread.Sheets.Designer.Designer(
demoHost,
undefined,
undefined,
{ sheetCount: 2 }
);
return designer.getWorkbook();
}
}
function initSpread(spread) {
spread.options.allowDynamicArray = true;
var sheet = spread.getActiveSheet();
spread.suspendPaint();
spread.suspendCalcService();
const restaurantReviews = [
["Username", "Review"],
[
"Sophie Martin",
"The restaurant offers a beautiful ambiance and attentive service, perfect for family gatherings.",
],
[
"Carlos Rodríguez",
"The food is delicious, but the prices are slightly high, which affects the overall value.",
],
[
"Ahmed Al-Farsi",
"It was noisy with poor service and slow food delivery, making for a disappointing experience.",
],
[
"Miaki Tanaka",
"Loved the unique dishes and inviting atmosphere!Definitely planning to come back.",
],
[
"Anya Petrovna",
"Great flavors and a cozy setting, although the waiting time was a bit too long.",
],
[
"Rajiv Kapoor",
"A varied menu with mixed results; some dishes were outstanding while others were just average.",
],
[
"Mohammed Hassan",
"The service was extremely poor and the food quality subpar, leaving a very negative impression.",
],
[
"Emma Johnson",
"The food was ordinary and the restaurant was too noisy, which detracted from the overall experience.",
],
];
sheet.setArray(0, 0, restaurantReviews);
sheet.setColumnWidth(0, 95)
sheet.setColumnWidth(1, 700);
sheet.setColumnWidth(2, 160);
sheet.setColumnWidth(3, 480);
sheet.setValue(0, 2, "TEXTSENTIMENT");
sheet.setFormula(1, 2, '=SJS.AI.TEXTSENTIMENT(B2:B9, "Positive", "Negative", "Neutral")');
sheet.getRange("C2:C9").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true })
sheet.setFormula(0, 3, '="The Formula Is " & FORMULATEXT(C2)');
sheet.setFormula(11, 0, '="The Formula Is " & FORMULATEXT(A13)');
sheet.setFormula(12, 0, '=SJS.AI.TRANSLATE(A1:B9, "ja-jp")');
sheet.getRange("A13:B21").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true })
const countries = [
["Country", "Please give me the capital of the country"],
["China"],
["India"],
["United States"],
["Indonesia"],
["Pakistan"],
["Brazil"],
["Nigeria"],
["Bangladesh"],
["Russia"],
["Japan"],
];
sheet.setFormula(23, 0, '="The Formula Is " & FORMULATEXT(B26)');
sheet.setArray(24, 0, countries);
sheet.setFormula(25, 1, "=SJS.AI.QUERY(B25, A26:A35)");
sheet.getRange("B26:B35").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true })
sheet.setFormula(36, 0, '="The Formula Is "&FORMULATEXT(B38)');
sheet.setFormula(37, 1, '=SJS.AI.QUERY("Reply to each customer\'s review in a friendly sentence ",B2:B9)');
sheet.getRange("B38:B45").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true });
const productItems = [
["Item"],
["Espresso"],
["Cheesecake"],
["Club Sandwich"],
["Green Tea"],
["French Fries"],
["Tiramisu"],
["Caesar Salad"],
["Latte"],
];
const categoryGuide = [
["Category"],
["Beverage"],
["Dessert"],
["Main Course"],
["Snack"],
];
sheet.setFormula(47, 0, '="The Formula Is " & FORMULATEXT(B50)');
sheet.setArray(48, 0, productItems);
sheet.setArray(48, 3, categoryGuide);
sheet.setFormula(49, 1, '=SJS.AI.QUERY("return the category of each item",A50:A57,"based on these categories",D50:D53)');
sheet.getRange("B50:B57").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true });
sheet.setFormula(59, 0, '="The Formula Is " & FORMULATEXT(B61)');
sheet.setFormula(60, 1, '=SJS.AI.QUERY("List the 20 largest cities in the world and connect them with their respective countries using hyphens (-), such as New York City - United States.")');
sheet.getRange("B61:B80").setBorder(new GC.Spread.Sheets.LineBorder('#A825FF', GC.Spread.Sheets.LineStyle.thick), { outline: true });
spread.resumeCalcService();
spread.resumePaint();
}
function _getElementById(id) {
return document.getElementById(id);
}
function injectAI(spread) {
const serverCallback = async (requestBody) => {
const response = await fetch(getAIApiUrl(), {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify(requestBody)
});
if (response.status === 429) {
alert('The server is busy, please try again later.');
return;
}
if (!response.ok) {
throw new Error(`HTTP error! status: ${response.status}`);
}
return response;
};
spread.injectAI(serverCallback);
}
function getAIApiUrl() {
return window.location.href.match(/http.+spreadjs\/learn-spreadjs\//)[0] + 'server/api/queryAI';
}
<!doctype html>
<html style="height:100%;font-size:14px;">
<head>
<meta charset="utf-8" />
<meta name="spreadjs culture" content="ko-kr"/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css"
href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<link rel="stylesheet" type="text/css"
href="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-designer/styles/gc.spread.sheets.designer.light.min.css">
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets/dist/gc.spread.sheets.all.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-shapes/dist/gc.spread.sheets.shapes.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-charts/dist/gc.spread.sheets.charts.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-print/dist/gc.spread.sheets.print.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-barcode/dist/gc.spread.sheets.barcode.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-pdf/dist/gc.spread.sheets.pdf.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-pivot-addon/dist/gc.spread.pivot.pivottables.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-slicers/dist/gc.spread.sheets.slicers.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-tablesheet/dist/gc.spread.sheets.tablesheet.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-formula-panel/dist/gc.spread.sheets.formulapanel.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-io/dist/gc.spread.sheets.io.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-ai-addon/dist/gc.spread.sheets.ai.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-designer-resources-ko/dist/gc.spread.sheets.designer.resource.ko.min.js"
type="text/javascript"></script>
<script
src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-designer/dist/gc.spread.sheets.designer.all.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/ko/purejs/node_modules/@mescius/spread-sheets-resources-ko/dist/gc.spread.sheets.resources.ko.min.js"
type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/js/license.js" type="text/javascript"></script>
<script src="$DEMOROOT$/spread/source/js/designer/license.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="styles.css">
</head>
<body>
<div class="sample-tutorial">
<div id="demo-host"></div>
</div>
</body>
</html>
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
display: flex;
flex-direction: row;
}
#demo-host {
width: 100%;
height: 100%;
}