input - 我正在尝试制作一个使用谷歌表上的条形码扫描仪自动更新的库存表
问题描述
看来我的代码应该可以工作。我想从输入框中获取一串文本,这在此代码中运行良好,并将其与我的谷歌表格上的单元格中的文本进行比较。它是扫描特定库存项目的列的函数的一部分。
变量 textInput 总是被正确填充。那来自输入框。但是,应该从谷歌工作表中填充的变量 itemName 不会从工作表中获取字符串。
我在第 2 列中有一张完整的库存项目,在第 1 列中有它们的数量,我试图让这个代码接受输入框中的某些东西的名称,然后自动扫描项目并更新库存表中的数量。
为什么我不能让变量 itemName 由谷歌表格上的单元格中的文本填充?
//'onOpen' makes this program begin when you open the spreadsheet that is refferenced
function onOpen(){
//This variable lets you stop the dialogue box from reopening or allow it to keep reopening when you enter another item.
var onOff="On";
//begin a loop which will reopen
while(onOff=="On"){
//Open the program which allows you to call information from a spreadsheet
var app=SpreadsheetApp;
//Call the active spreadsheet and then the specific sheet called 'Inventory'
var activeSheet=app.getActiveSpreadsheet().getSheetByName("Inventory");
//Access the user interface
var ui=app.getUi();
//Initiate a prompt box
var prompt=ui.prompt("Inverntory", "Please scan the QR code of the item you want to update", ui.ButtonSet.OK);
//Extract the text logged from the input box
var textInput=prompt.getResponseText();
//Extract the button value from the input box ('OK' or 'X')
var buttonButton=prompt.getSelectedButton();
//Stop the dialogue box from reopening of 'X' iclicked on the dialogue box
if(buttonButton=ui.Button.CLOSE){
onOff="Off";
}
//Set the variable for scanning rows at row 2
var cellRow=2;
//Set the variable for scanning columns at column 2
var cellColumn=2;
//This variable will be populated with whatever cell is currently being scanned and compared to the text from the input box
var itemName="unassigned";
//This variable will count the cells that have been scanned and compared
var counter=0;
//This variable will be used to limit how many time the while loop can cycle
var counterMax=500;
//This variable will be used to call and change the quantity of an inventory item
var itemCount="unassigned";
while(counter<counterMax){
//This should get the text from the current cell being scanned for comparison
itemName=activeSheet.getRange(cellRow, cellColumn).getRichTextValue();
//If the current cell matches the input box text, this if statement will executed
if (itemName==textInput){
//This should move the current cell being looked at to the left one, putting us in the quantity row
cellColumn=cellColumn-1;
//This should pull the value from the current cell
itemCount=activeSheet.getRange(cellRow, cellColumn);
//This should add 1 to the inventory value
itemCount=itemCount+1;
//This should update the inventory quantity to it's new value in the sheet
activeSheet.getRange(cellRow, cellColumn).setValue(itemCount);
//This should move the current column to the right one, putting us back in the column where the inventory items names are stored
cellColumn=cellColumn+1;
//This will set the counter to the limmit which should end the while loop
counter=counterMax;
}
else{
//This should move the scanner to the next row
cellRow=cellRow+1;
//This should make the while loop one cycle closer to the max number of cycles
counter=counter+1;
}
}
}
}
对不起,我知道它有点长。但这是 50% 的评论。我只是想拥有干净且易于理解的代码。
解决方案
推荐阅读
- r - 可以在 R 中的地图上覆盖线图吗?
- java - 重启 Spring Boot 应用程序
- javascript - 用 Javascript 创建数组,带键
- c# - DataTable to XML File 存储在内存中并允许用户下载 XML
- arrays - hive - 是否可以从 Map 创建列
- android - 动态功能模块中 Fragments 的 fragmentScenario Espresso 测试
- java - 递归:扫描数字中数字的频率:redux
- angular - 如何在数据源数组中的数据更改后让 Angular mat-table 自动刷新
- python - 要求失败:未向此摘要器添加任何内容
- odoo - 将标准 Odoo 模块复制到新的自定义模块