Javascript 查找字符串";“用户输入”;在Google工作表中显示找到它的单元格
我不熟悉谷歌应用程序脚本和javascript,所以请原谅我的无知 我有一个谷歌表,其中包含了计算机的资产标签号列表。它还包含学生正在使用的笔记本电脑的用户名、全名和序列号 例如: 学生姓名用户名AssetTag序号 学生1用户名1 1002001####-##-#### 学生2用户名2 1002002####-##-#### 学生3用户名3 1002003####-##-#### 学生4用户名4 1002004####-##-#### 学生5用户名5 1002005####-##-#### 学生6用户名6 1002006####-##-#### 学生7用户名7 1002007####-##-#### 学生8用户名8 1002008####-##-#### 我需要能够让用户输入资产标签号,并让脚本返回它在其中找到该编号的单元格,理想情况下返回一个变量 计划是扫描输入资产标签的条形码,扫描后让它在谷歌表单上填写其余信息。因此,如果有人扫描1002001的条形码,它会为他们填写姓名、用户名和序列号字段。我希望我能找出其余的,但为了做到这一点,我需要包含资产编号的单元格Javascript 查找字符串";“用户输入”;在Google工作表中显示找到它的单元格,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我不熟悉谷歌应用程序脚本和javascript,所以请原谅我的无知 我有一个谷歌表,其中包含了计算机的资产标签号列表。它还包含学生正在使用的笔记本电脑的用户名、全名和序列号 例如: 学生姓名用户名AssetTag序号 学生1用户名1 1002001####-##-#### 学生2用户名2 1002002####-##-#### 学生3用户名3 1002003####-##-#### 学生4用户名4 1002004####-##-#### 学生5用户名5 1002005####-##-#### 学
function FindCell() {
var ss = SpreadsheetApp.openById("0AmBYpL3aN9TZdDhZeGJnXzhRMkh2TkVTaHQtNnliSUE");
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
var cell = findCell();
Logger.log(cell);
}
谢谢大家!
另外,我一直在这里阅读关于批处理脚本的答案,但现在我正在尝试谷歌品牌的javascript。这是我的第一篇帖子…波特,你的思路是对的,但有一些问题。首先,您的函数名为FindCell(大写为F),它调用了一个名称非常相似的函数FindCell(小写为F),该函数在任何地方都没有显示 提供的脚本没有显示如何使用资产标记。您可能有一些函数获取它并将输入声明为变量。您需要将该变量传递给搜索匹配项的函数。上面的函数实际上不会搜索任何内容 这就是我要做的(用评论的语句来解释发生了什么):
function getScannedInput(){/*我正在模拟您可能拥有的获取扫描输入的函数
您将使用脚本在此处获取输入*/
var scannedInput=1002001//我对您给出的数字进行了硬编码,例如
var myInfo=FindCell(scannedInput);//您需要将扫描输入的值传递给函数
//返回此2D数组[[StudentName,userName,SN,cellAddress]]
var StudentName=myInfo[0][0];
var userName=myInfo[0][1];
var SN=myInfo[0][2];
var cellAddress=myInfo[0][3];//您现在可能不需要这个。
/*请记住,如果您仍然需要使用手机地址,您需要
在这个函数中也为ss和sheet设置变量*/
//*现在使用StudentName、userName和SN进行操作*
}
函数FindCell(scannedInput){//您需要将扫描输入的值传递给函数
var ss=SpreadsheetApp.openById(“1W3hkCk8foL7fQtmVkcU4ZP4eTbHT696cacR6a sSeDY”);
var sheet=ss.getActiveSheet();
var range=sheet.getDataRange();
var values=range.getValues();
var myInfo=[];//创建一个空数组,以便在找到信息时将其放入
var=false;
对于(var i=0;iThanks@Bonifacio2。我在我的原始问题中添加了一些代码。我刚刚开始使用javascript/google应用程序脚本,我可能有点不知所措。但是老板想要老板想要的东西。我毫不怀疑我能学会它,但我担心这将花费比他想要的更多的时间。哇!Th谢谢你!我将花一段时间来研究所有的语法,并试图找出它为什么会像你说的那样,但它看起来很棒!看起来正是我所需要的。非常感谢!你的代码让我比以前走得更远,但我还有一个问题(多个问题,但我想最好一次只回答一个问题)。关于这方面的政策是什么,我应该“回答我的问题”吗我的新问题将所有问题都保留在一个大问题中,我是否应该编辑我的原始问题;如果是,我是否也要保留原始问题,还是应该打开一个完整的新问题?我不想以错误的方式进行操作。再次感谢!而且,看起来myInfo数组中的信息实际上是嵌套的。不确定我是否说对了。如果我说对了e> var serialNumber=myInfo[0]
我得到一个username1################的响应。但是如果我这样做的话,var serialNumber=myInfo[0][0]
我得到了##############的正确回答。我不确定为什么会这样,但我可以处理它。我想这可能是相关的,以防以后有人看到。不客气。鉴于评论中允许的字符数量有限,加上我的技能有限,全新的问题是你最好的选择:)如有必要,您可以链接回此数组。我甚至无法解释为什么myInfo在返回后会更改为2D数组。可能与值最初是2D数组有关,但在调试器中,myInfo在返回行之后才显示为单个数组。奇怪!我还应该说,我错误地假设SN代表StudentName not序列号-我在您的表格标题中没有发现SN。我将编辑我的答案。
function getScannedInput() { /*I'm simulating the function you probably have which gets the scanned input
You'll have your script to get the input here*/
var scannedInput = 1002001 //I hardcoded the number you gave just for example
var myInfo = FindCell(scannedInput); // You need to pass the value of the scanned input to the function
//returns this 2D array [[StudentName, userName, SN, cellAddress]]
var StudentName = myInfo[0][0];
var userName = myInfo[0][1];
var SN = myInfo[0][2];
var cellAddress = myInfo[0][3]; //You may not need this now.
/*Bear in mind that if you still need to use the cellAddress you'll need to
set variables for the ss and sheet in this function too.*/
// * Now do stuff with StudentName, userName & SN *
}
function FindCell(scannedInput) { // You need to pass the value of the scanned input to the function
var ss = SpreadsheetApp.openById("1W3hkCk8foL7fQtmVkcU4ZP4eTbHT696cacR6a-sSeDY");
var sheet = ss.getActiveSheet();
var range = sheet.getDataRange();
var values = range.getValues();
var myInfo = []; //Create an empty array to put your info in when found
var found = false;
for (var i=0; i<values.length; ++i) { // Loops through each row
for (var j=0; j<values[i].length; ++j) { // Loops through each column
if (values[i][j] == scannedInput) { // Checks for match to scannedInput
myInfo.push(values[i][0]);//Adds StudentName to the array
myInfo.push(values[i][1]);//Add username to the array
myInfo.push(values[i][3]);//Adds SN to the array
myInfo.push(sheet.getRange(i, j).getA1Notation()); /*If you still need to return the cell address -
Do you still need to? (I think probably not.) Delete if you don't*/
found = true;
break; // Breaks out of the j loop
}
}
if (found) {
break; // Breaks out of the i loop if found is true i.e. scannedInput was found
}
}
return [myInfo]; /*returns this array [StudentName, userName, SN, cellAddress]
or [StudentName, userName, SN] if you didn't need cellAddress above.*/
}