gpt4 book ai didi

javascript - 在 Google 表格侧边栏中创建自定义搜索

转载 作者:行者123 更新时间:2023-12-03 10:53:03 24 4
gpt4 key购买 nike

我有一张大约有 1400 行的表,用于跟踪 parking 场的 parking 位。到目前为止,在帮助下,我已经能够打开侧边栏、创建搜索框并添加“搜索”和“关闭”按钮。现在,一旦单击“搜索”按钮,它看起来就没有捕获搜索框中的空格号,也没有与脚本通信。

我的问题是如何从搜索框中获取信息,在 B 列中查找匹配项,从该行的 B-G 列中获取信息,并以以下格式返回信息:

  • B 列:colBInfo
  • C 列:colCInfo
  • D 列:colDInfo
  • E 列:colEInfo
  • F 列:colFInfo
  • G 列:colGInfo
  • 行号:rowNumInfo

我已经进行了调试并发现函数 searchInfo 给出了错误:范围的坐标或尺寸无效。 (第 28 行,文件“Sidebar”)因为 rowWithSpaceNumber 返回 -1。我相信一旦 theSpaceNumber 能够从搜索框中获取信息,它就会纠正这个错误。

菜单.gs

function onOpen() { 

SpreadsheetApp.getUi()
.createMenu('Sidebar')
.addItem('Show Sidebar', 'showSidebar')
.addToUi();
}

侧边栏.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>

最佳答案

据我所知,失败有两个原因。

首先,显示 -1 的原因是它在电子表格中找不到传递的值。

其次,您传递的值的数据类型将为string,而theRowValues中的值的数据类型为object。因此,即使您传递电子表格中的可用数据,它也总是会失败,因为比较时有两种不同的类型。

要解决此类型错误,

sidebar.gs 中使用以下行更改 theRowValues.push(values[i])

theRowValues.push(Utilities.formatString("%s", values[i]));

这会将您的电子表格数据从对象数据类型转换为字符串数据类型。

执行此操作后,您仍然需要处理电子表格中的错误。

想象一下,如果您传递了 spreasdheet 中不可用的数据,您的代码将为 rowWithSpaceNumber 返回值 -1,这将导致var theRowData =sheetWithData.getSheetValues(rowWithSpaceNumber, 2, 1, 6); 处出现错误,因为 -1 不是行的有效值。

关于javascript - 在 Google 表格侧边栏中创建自定义搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28374024/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com