Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何实现查询功能以使用Google电子表格作为数据库?_Javascript_Database_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 如何实现查询功能以使用Google电子表格作为数据库?

Javascript 如何实现查询功能以使用Google电子表格作为数据库?,javascript,database,google-apps-script,google-sheets,Javascript,Database,Google Apps Script,Google Sheets,我正在尝试使用电子表格作为数据库,其中每个工作表都是一个表,人名用作主键(这似乎不是最好的解决方案,但良好的电子表格界面使我更喜欢此解决方案,而不是尝试使用ScriptDB。) 我想做的是:当你在一张工作表上选择一个名字并按下我添加的菜单上的一个按钮时,一个函数在另一个表和一个屏幕中执行搜索,并在另一个表中显示该查询的所有结果,显示只有该表包含的属性记录(稍后我想添加从GDocs模板生成文本文件的可能性)。 我的问题是: 1) 考虑到此屏幕/面板UI的长度可变(因为其他表中的记录编号可能不同),

我正在尝试使用电子表格作为数据库,其中每个工作表都是一个表,人名用作主键(这似乎不是最好的解决方案,但良好的电子表格界面使我更喜欢此解决方案,而不是尝试使用ScriptDB。) 我想做的是:当你在一张工作表上选择一个名字并按下我添加的菜单上的一个按钮时,一个函数在另一个表和一个屏幕中执行搜索,并在另一个表中显示该查询的所有结果,显示只有该表包含的属性记录(稍后我想添加从GDocs模板生成文本文件的可能性)。 我的问题是: 1) 考虑到此屏幕/面板UI的长度可变(因为其他表中的记录编号可能不同),在Google Apps脚本中创建此面板/UI的最佳方法是什么?(我不想使用Logger.log,因为我想添加一个按钮将查询转换为文件)

2) 除此解决方案外(在生成的二维阵列中进行搜索):

function test(){//在本例中,使用参数“any”测试find函数
var结果=findItem(“任何”);
if(result){Logger.log(result.getA1Notation())}else{Logger.log('no luck!'')};
}
函数findItem(项目){
var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var data=ss.getDataRange().getValues()
对于(var n=0;n-1){//这是一个“严格”的查找,即该值必须是整个搜索项。如果要进行部分匹配,则应进行不同的比较。。。
return(ss.getRange(n+1,数据[n].indexOf(item)+1));//如果找到,则返回范围。请注意+1,因为工作表有1个索引,而数组有0个索引
}
}
返回false;//如果我们在工作表的末尾没有结果。。。
}
有没有其他方法可以执行这样的查询


谢谢你的帮助

创建一个UI实例。然后,在主面板内的可滚动面板是执行此操作的最佳方法,然后使用数组搜索数据。我通常创建页眉主体和页脚面板,主体可以滚动

function test(){ // to test the find function with an argument, 'any' in this case 
  var result = findItem('any');
  if(result){Logger.log(result.getA1Notation())}else{Logger.log('no luck !')};
}

function findItem(item){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = ss.getDataRange().getValues()
  for(var n = 0;n<data.length;++n){
    if(data[n].indexOf(item)>-1){ // this is a "strict" find, ie the value must be the entire search item. If you want to do partial match you should compare differently...
      return (ss.getRange(n+1,data[n].indexOf(item)+1)); // if found return the range. note the +1 because sheets have 1 index while arrays have 0 index
    }
  }
  return false;// if we come to the end of sheet without result...
}