javascript - 如何搜索产品 'item type' 的数组并将其发送到名称为 'Item Type' 的工作表?

标签 javascript sorting google-apps-script multidimensional-array google-sheets

我正在整理一份 Google 表格,以根据零件 list 组装定制无人机。
主零件 list 和编译器位于主表上。
我的脚本可以根据项目类型(按字母顺序)组装行数组。

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

我的想法是运行一个 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
}



}

最佳答案

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

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

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

=FILTER(MASTER!A27:G,MASTER!A27:A="PDB")

这是结果。

enter image description here

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

关于javascript - 如何搜索产品 'item type' 的数组并将其发送到名称为 'Item Type' 的工作表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59180303/

相关文章:

javascript - 我将如何验证选择子集中的唯一选择?

java - 为什么 PriorityQueue.toString 返回错误的元素顺序?

jquery - IE跨域jSONP到google apps脚本内容服务

javascript - 使用 Cypress 选择文本

javascript - jQuery 下拉列表悬停

c# - Javascript 中的日期选择器和时间选择器条件

c# - WPF Datagrid 排序索引问题

arrays - 多样化排序的算法

javascript - 获取当前Properties中按顺序存储的所有key的数组

javascript - Apps Script Advanced Drive API 服务 - newFile() 方法不创建文件