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