使用谷歌应用程序脚本从工作表中获取值并将其显示在文本框中
Using Google App Script to get values from sheets and display them in text box
因此,Google最近更新了Google App Script API,并添加了许多不错的功能,但在这个过程中,他们也贬值了API的lots。我一直在为我在大学校园工作的地方开发图书馆数据库用户界面,当我想将我的应用程序更新到新的API时,很多东西都坏了,我不知道如何让它们重新工作。
我想做的是从Google Sheets文件中获取一个值,然后简单地将该值放在web应用程序的文本框中。目前我无法完成那项工作。此外,我发现了一些麻烦的地方,即调试器似乎不正确。我知道,大胆的指控。让我试着给你看看。
代码.gs
function doGet(e) {
var html = HtmlService.createHtmlOutputFromFile('index')
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
return html;
}
function searchBooks(searchItem, searchType){
var sI = searchItem;
Logger.log(sI);
var sT = searchType;
Logger.log(sT);
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
var ss = sheets[0];
var itemDataRange = ss.getRangeByName("itemInformation");
var selectedItem = null; //the item that will be returned
//var selectedSearch = searchItem;
var titles = sheet.getRange("K2:K9507").getValues(); //get the titles of the items
var authors = sheet.getRange("J2:J9507").getValues(); //get the authors in the sheet
var barcodes = sheet.getRange("B2:B9507").getValues(); //get the barcodes in the sheet
var itemsArray = new Array();
if (sT == '')
{
return null;
}
else if (sT.value == 'Please select type...')
{
var test = "this works";
Logger.log(test);
return selectedItem;
}
else if(sT == 'Barcode')
{
var selectedBarcode = sI;
for(var i = 0; i < barcodes.length; i++) //search for the barcode
{
if(barcodes[i] == selectedBarcode)
{
selectedItem = titles[i];
break; //break immediately because barcodes are not duplicated
}
}
if(selectedItem != null)
{
return selectedItem;
}
else
{
selectedItem = "No book(s) found";
return selectedItem;
}
return selectedItem;
}
}
...
index.html
<script>
function bookSearch()
{
var searchItem = String(document.getElementById('searchItem').value.toLowerCase());
var searchType = String(document.getElementById('searchType').value.toLowerCase());
google.script.run.withSuccessHandler(bookFound).searchBooks(searchItem, searchType);
}
...
function bookFound(selectedItem)
{
document.getElementById("bookResultBox").innHTML = selectedItem;
alert(selectedItem);
}
</script>
当我测试这段代码,并选择一个类别为"条形码"的搜索值时,我成功地获得了被带入函数searchBooks的数据的控制台日志,但是调试控制台说变量sI、sT、searchItems和searchType都是未定义的。
我也一直在努力找出正确的API调用来搜索电子表格(当处理像getRangeByName这样的东西时)。我认为,自从大更新以来,可能有一种稍微不同的方法来做到这一点。在我更改一些代码之前,我可能已经让它工作了,尽管当我试图弄清楚为什么什么都没有显示时,我开始更改了很多代码。当我看到"未定义"的调试控制台日志时,我有点害怕。我不知道是我搞砸了,还是API搞砸了。
如有任何帮助,请提前告知:)
您的代码中可能存在错误。可能来自
var itemDataRange = ss.getRangeByName("itemInformation");
变量ss
不是电子表格类,而是工作表类别。不能获取工作表类的RangeByName。Sheet类没有getRangeByName()
方法。
我会把你的代码改成这个:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var itemDataRange = ss.getRangeByName("itemInformation");
如果你需要得到第一张纸:
var theFirstSheet = ss.getSheets()[0];
相关文章:
- xmlhttp.responseText不显示文本
- 如何在MVC中使用jQuery在文本框旁边显示文本
- 根据页面的位置突出显示文本中的字符
- 当选择值x时,Javascript需要在正确的位置显示文本区域,从而循环通过具有选择选项的表单
- 操作javascript变量[HTML]以只显示文本
- 如何显示文本长度,即使它超过ng最大长度
- 如何在悬停时显示文本而不移动页面上的内容
- ASP.NET MVC,在文本框旁边显示文本
- 可单击滚动图像以显示文本框
- 使用鼠标悬停JavaScript/HTML显示文本
- 延迟高亮显示文本区域中的文本
- 选择“选择选项”时显示文本.怎么做
- 无法使用JavaScript在画布上显示文本
- 在不更改HTML源代码的情况下,在管理员TinyMCE编辑器中突出显示文本
- 将鼠标悬停在图像上时显示文本
- javascript:在for循环中使用settimeout来定期显示文本
- 一页主题搜索/用下一个按钮突出显示文本
- JavaScript 在更改选择时不显示文本区域
- 用于突出显示文本的JQuery/JavaScript插件
- 模式显示文本区域内容不是字符串