Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.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 如何在数组中搜索产品';项目类型';并以';项目类型';?_Javascript_Sorting_Google Apps Script_Multidimensional Array_Google Sheets - Fatal编程技术网

Javascript 如何在数组中搜索产品';项目类型';并以';项目类型';?

Javascript 如何在数组中搜索产品';项目类型';并以';项目类型';?,javascript,sorting,google-apps-script,multidimensional-array,google-sheets,Javascript,Sorting,Google Apps Script,Multidimensional Array,Google Sheets,我正在整理一张谷歌表格,以便根据零件清单组装定制的无人机版本。 主零件清单和编译器位于主工作表上。 我已经有了脚本,可以根据项目类型(字母顺序)组装一个行数组 我想这样做,在按下按钮时,脚本组装并排序一个数组,然后将行复制到它们的项目类型页面,这样编译器就可以创建一个下拉菜单(菜单部分存在并工作)。只需要使用主列表中的数据填充项目类型页面 我的想法是运行if语句,例如如果字符串匹配,则将数组字符串写入匹配表上的空范围。这是可能的还是有更简单的方法 /** @customFunction What

我正在整理一张谷歌表格,以便根据零件清单组装定制的无人机版本。
主零件清单和编译器位于主工作表上。
我已经有了脚本,可以根据项目类型(字母顺序)组装一个行数组

我想这样做,在按下按钮时,脚本组装并排序一个数组,然后将行复制到它们的项目类型页面,这样编译器就可以创建一个下拉菜单(菜单部分存在并工作)。只需要使用主列表中的数据填充项目类型页面

我的想法是运行if语句,例如如果字符串匹配,则将数组字符串写入匹配表上的空范围。这是可能的还是有更简单的方法

/** @customFunction
What I want the script to do:
Read Column 1 from A26:A100 or lookahead for end of list
If current cell contains Sheet Name, copy row to corresponding sheet.
*/

/** function myFunction() {
Browser.msgBox('You clicked it!');
}
@customFunction
*/ 

/** var PDB = app.getActiveSpreadsheet().getSheetByName("PDB"); //Target sheet for PDB
var VTX = app.getActiveSpreadsheet().getSheetByName("VTX"); //Target sheet for VTX
var FRAME = app.getActiveSpreadsheet().getSheetByName("FRAME"); //Target sheet for FRAME
var MOTOR = app.getActiveSpreadsheet().getSheetByName("MOTOR"); //Target sheet for MOTOR
var FPVCAM = app.getActiveSpreadsheet().getSheetByName("FPVCAM"); //Target sheet for FPVCAM
var AIOFC = app.getActiveSpreadsheet().getSheetByName("AIO FC"); //Target sheet for AIO FC
var ESC = app.getActiveSpreadsheet().getSheetByName("ESC"); //Target sheet for ESC
var PROPS = app.getActiveSpreadsheet().getSheetByName("PROPS"); //Target sheet for PROPS

var itemType = activeSheet.getRange(i, 1).getValue();
*/


function sortscript() {
Logger.clear(); 
var app = SpreadsheetApp                                       //selects app
var activeSheet = app.getActiveSpreadsheet().getActiveSheet(); //selects Spreadsheet and Sheet
var itemListArr = [];

for(var i=27;i<=58;i++){
 var itemListGet = activeSheet.getRange(i, 1, 1, 7).getValues();   //Create Array of Items and rows
itemListArr.push(itemListGet);
 itemListArr.sort();                                               //Groups by item type alphabetically
}


if(itemListArr.indexOf("PDB") > -1) {
activeSheet.getActiveCell()
Logger.log()                        //Does nothing right now ik
}



}
/**@customFunction
我希望脚本执行的操作:
阅读A26:A100中的第1列,或对列表末尾进行前瞻
如果当前单元格包含图纸名称,请将行复制到相应的图纸。
*/
/**函数myFunction(){
msgBox('您单击了它!');
}
@自定义函数
*/ 
/**var PDB=app.getActiveSpreadsheet().getSheetByName(“PDB”)//PDB目标表
var VTX=app.getActiveSpreadsheet().getSheetByName(“VTX”)//VTX的目标表
var FRAME=app.getActiveSpreadsheet().getSheetByName(“FRAME”)//帧的目标片
var MOTOR=app.getActiveSpreadsheet().getSheetByName(“电机”)//电机用靶板
var FPVCAM=app.getActiveSpreadsheet().getSheetByName(“FPVCAM”)//FPVCAM的目标页
var AIOFC=app.getActiveSpreadsheet().getSheetByName(“AIO FC”)//AIO FC的目标表
var ESC=app.getActiveSpreadsheet().getSheetByName(“ESC”)//电子稳定控制系统目标表
var PROPS=app.getActiveSpreadsheet().getSheetByName(“PROPS”)//道具靶板
var itemType=activeSheet.getRange(i,1.getValue();
*/
函数sortscript(){
Logger.clear();
var app=电子表格应用//选择应用
var activeSheet=app.getActiveSpreadsheet().getActiveSheet();//选择电子表格和工作表
var itemListArr=[];
对于(变量i=27;i-1){
activeSheet.getActiveCell()
Logger.log()//现在什么都不做
}
}

也许这不是您想要的,但我认为这项任务太简单,无法使用脚本(除非您计划添加更多自动化功能)

您只需转到各个项目工作表,并使用公式过滤主工作表上的范围

对于“PBD”表,公式如下所示:

=FILTER(MASTER!A27:G,MASTER!A27:A="PDB")
这是结果


在“主”工作表上,您可以将数据验证设置为“PBD”工作表的“B”列。如果在列B中包含所有行,则项目列表将自动更新(例如,如果数据集中有2个以上的“PDB”项目)

可能这不是您想要的,但我认为这项任务太简单,无法使用脚本(除非您计划添加更多自动化功能)

您只需转到各个项目工作表,并使用公式过滤主工作表上的范围

对于“PBD”表,公式如下所示:

=FILTER(MASTER!A27:G,MASTER!A27:A="PDB")
这是结果


在“主”工作表上,您可以将数据验证设置为“PBD”工作表的“B”列。如果在B列中包含所有行,则项目列表将自动更新(例如,如果数据集中有2个以上的“PDB”项目)

阅读您的问题后,我假设:

  • 您希望从表的数据填充不同的图纸
  • 您希望根据表中的一列(
    )执行此操作
如果我的假设是正确的,您可以使用以下答案来实现您的请求

代码
函数sortScript(){
var电子表格=电子表格app.openById(
“{电子表格ID}”);
var sheet=电子表格。getSheetByName(“主”);
var row=27;//项目表的第一行
做{
var item=sheet.getRange(第1、1、7行).getValues();
var destinySheet=spreadsheet.getSheetByName(项[0][0]);
destinySheet.appendRow(项目[0]);
行++;
}while(sheet.getRange(行+1,1,1,7).getValues()[0][0]!=”);
}
行为 代码将加载表的第一行,从表中读取第一列(列
),并将该行附加到具有相同名称的工作表中。然后它将迭代,直到找不到更多的行

观察
  • 在您的示例电子表格的第30行,有一个产品的
    ITEM
    列为
    FC
    。我认为它必须是
    AIO FC
    。如果不正确,则需要创建
    FC
    工作表
典故

阅读您的问题后,我假设:

  • 您希望从表的数据填充不同的图纸
  • 您希望根据表中的一列(
    )执行此操作
如果我的假设是正确的,您可以使用以下答案来实现您的请求

代码
函数sortScript(){
var电子表格=电子表格app.openById(
“{电子表格ID}”);
var sheet=电子表格。getSheetByName(“主”);
var row=27;//项目表的第一行
做{
var item=sheet.getRange(第1、1、7行).getValues();
var destinySheet=spreadsheet.getSheetByName(项[0][0]);
destinySheet.appendRow(项目[0]);
行++;
}while(sheet.getRange(行+1,1,1,7).getValues()[0][0]!=”);
}
行为 代码将加载表的第一行,从表中读取第一列(列
),并将该行附加到具有相同名称的工作表中。然后它将迭代,直到找不到更多的行

观察
  • 在您的示例电子表格的第30行,有一个产品的
    ITEM
    列为
    FC
    。我认为它必须是
    AIO FC
    。如果不是的话