나는 주차 공간을 추적 할 수있는 약 1400 개의 행을 가진 시트가 있습니다. 지금까지 도움말을 통해 사이드 바를 열고 검색 상자를 만들고 "검색"및 "닫기"버튼을 추가 할 수있었습니다. 현재 "검색"버튼을 클릭하면 검색 창에서 공간 번호를 가져 오지 않고 스크립트와 통신하지 않는 것처럼 보입니다.Google 스프레드 시트 사이드 바에 맞춤 검색 만들기
-
:
- 칼럼 B : colBInfo
- 칼럼 C : colCInfo
- 칼럼 D : colDInfo
- 열 E : colEInfo
- 칼럼 F : colFInfo ,536,913,632 10
- 열 G : colGInfo
- 행 번호 : 범위의 좌표 또는 치수가 무효 : rowNumInfo
내 문제는 내가 그 행의 열 BG의 정보를 잡고, 다음과 같은 형식으로 정보를 반환, 검색 상자에서 정보를 얻을 일치하는 열 B를 통해 볼 수있는 방법입니다
나는 searchInfo 오류를주고 함수 디버그 및 기금을 했어요. rowWithSpaceNumber가 -1을 리턴하기 때문에 (줄 28, 파일 "사이드 바"). 일단 theSpaceNumber가 검색 상자에서 정보를 가져올 수 있으면이 오류를 해결할 수 있다고 생각합니다.
Menu.gs
function onOpen() {
SpreadsheetApp.getUi()
.createMenu('Sidebar')
.addItem('Show Sidebar', 'showSidebar')
.addToUi();
}
Sidebar.gs
function showSidebar() {
var html = HtmlService.createHtmlOutputFromFile('index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setTitle('Individual Space Lookup');
SpreadsheetApp.getUi()
.showSidebar(html);
SpreadsheetApp.getActiveSpreadsheet().toast('Sidebar opened', 'Status');
}
function searchInfo(theSpaceNumber) {
var ss = SpreadsheetApp.openById("1isuunf_SRThXe8C71ROKAC2JvjZ49w05MrLE2323Yqk");
Logger.log("Book name: "+ ss.getName());
var sheetWithData = ss.getSheetByName("Master Sheet");
Logger.log("Sheet name: "+ sheetWithData.getName());
var numOfRowsInSheet = sheetWithData.getLastRow();
var values = sheetWithData.getSheetValues(4, 2, numOfRowsInSheet, 1);
Logger.log("Values: "+ values);
//Convert two dimensional array to one dimensional array.
var theRowValues = [];
for (var i = 0; i < values.length; i++) {
theRowValues.push(values[i]);
};
var rowWithSpaceNumber = theRowValues.indexOf(theSpaceNumber);
Logger.log("rowWithSpaceNumber: " + theSpaceNumber);
//Get 6 columns of data: getSheetValues(startRow, startColumn, numRows, numColumns)
var colBInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 2, 1, 1);
var colCInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 3, 1, 1);
var colDInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 4, 1, 1);
var colEInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 5, 1, 1);
var colFInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 6, 1, 1);
var colGInfo = sheetWithData.getSheetValues(rowWithSpaceNumber, 7, 1, 1);
var rowNumInfo = sheetWithData.getRange(rowWithSpaceNumber, 2);
Logger.log("Row Number: " + rowWithSpaceNumber);
return app (colBInfo, colCInfo, colDInfo, colEInfo, colFInfo, colGInfo, rowNumInfo);
};
index.html을
<div>
Search Individual Space: <input type="search" id="idUserInput"/>
<BR>
<input type="button" value="Search"
onclick="getUserInput()" />
<input type="button" value="Close"
onclick="google.script.host.close()" />
<script>
function onSuccess(colBInfo, colCInfo, colDInfo, colEInfo, colFInfo, colGInfo, rowNumInfo) {
alert('Column B: ' + colBInfo
<br>'Column C: ' + colCInfo
<br>'Column D: ' + colDInfo
<br>'Column E: ' + colEInfo
<br>'Column F: ' + colFInfo
<br>'Column G: ' + colGInfo
<br>'Row Number: ' + rowNumInfo
);
}
function getUserInput() {
var theSpaceNumber = document.getElementById("idUserInput").value;
google.script.run.withSuccessHandler(onSuccess)
.searchInfo(theSpaceNumber);
};
</script>
</div>
var values = sheetWithData.getSheetValues (4, 2, numOfRowsInSheet, 1);': 마지막 열 번호가 무엇이든간에 1로 변경하십시오. – rpm
@ user1989가 1에서 6으로 변경되면 시트의 모든 데이터가 1 열만 검색하는 대신 입력 된 데이터를 검색합니다. 내가 가지고있는 가장 큰 문제는 검색 상자에 입력 한 데이터가 올바르게 상자에서 꺼내 지거나 호출되지 않는다는 것입니다. 상자에 입력 된 정보를 나머지 스크립트로 전달하는 방법에 대한 제안 사항은 무엇입니까? –
GAS에 값을 전달하는 데 문제가없는 것 같습니다. 맞습니다. – rpm