반응형
구글 스프레드 시트 사용 시 셀 참조 문제 정리
1. 셀 참조 문제: Google Sheets의 사용자 정의 함수에서는 셀 참조를 문자열 형태로만 전달할 수 있습니다. 예를 들어, `=gemini("질문", A1)`와 같은 형태는 작동하지 않으며, `=gemini("질문", "A1")`처럼 셀 참조를 문자열로 처리해야 정상 작동합니다.
2. 보완 방법 :
- 명령 테스트: 기본 역할과 지시사항을 명시. 예: "다음 내용의 주제를 적어주세요:"
- 입력 테스트: 역할 및 지시사항에 맞는 작업 내용을 기록.
- 문자열 합침: 명령과 입력 문자열을 `&`를 사용하여 합침.
- Gemini 답변: 합쳐진 최종 명령과 입력 텍스트 문자열을 Gemini 함수에 전달하여 답변을 받고, 이를 최종 결과로 사용.
아래는 Gemini API에 사용된 앱스크립트, 아래의 앱스크립트를 써서 =gemini(G1) 와 같이 쓰면 해결된다. API 키는 Get API key | Google AI Studio 의 홈페이지에서 생성해서 아래에 key=YOUR_API_KEY 영역에 복사해서 붙여 넣으면 됨.
/**
* 주어진 스프레드시트에서 특정 범위의 셀 값을 가져옵니다.
* @param {string} 스프레드시트ID - 값을 가져올 스프레드시트의 고유 ID.
* @param {string} 시트 - 인자값
* @return {string[][]} 셀 값 배열.
*/
function gemini(inputText) {
var url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=YOUR_API_KEY";
//var cellReferenceStr = cellReference.toString();
//Logger.log(cellReferenceStr);
//var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//var sheet = spreadsheet.getActiveSheet();
//var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 현재 활성 시트를 가져옵니다.
// 셀 값을 가져옵니다.
//var cellValue = sheet.getRange(cellReference).getValues();
// 범위 데이터를 inputText와 결합
var combinedText = inputText //+ " " + cellValue;
var payload = {
contents: [
{
parts: [
{
text: combinedText
}
]
}
]
};
var options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
var response = UrlFetchApp.fetch(url, options);
var responseText = response.getContentText();
// JSON 응답을 파싱
var jsonResponse = JSON.parse(responseText);
// 원하는 'text' 부분 추출
var extractedText = jsonResponse.candidates[0].content.parts.map(function(part) {
return part.text;
}).join("\n");
// 추출된 텍스트를 로그로 출력
Logger.log(extractedText);
return extractedText;
}
반응형
댓글