Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 获取特定列的值并对特定列进行筛选-谷歌应用程序脚本

Javascript 获取特定列的值并对特定列进行筛选-谷歌应用程序脚本,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有这个剧本 function filter2() { var sss = SpreadsheetApp.getActiveSpreadsheet(); //replace with source ID var ss = sss.getSheetByName('Users'); //replace with source Sheet tab name var range = ss.getRange('A:G'); //assign the range you want to copy

我有这个剧本

function filter2() {
var sss = SpreadsheetApp.getActiveSpreadsheet(); //replace with source ID
var ss = sss.getSheetByName('Users'); //replace with source Sheet tab name
var range = ss.getRange('A:G');      //assign the range you want to copy
var rawData = range.getValues()     // get value from spreadsheet 1
var data = []                       // Filtered Data will be stored in this array
for (var i = 0; i< rawData.length ; i++){
if(rawData[i][6] == "User missing")            // Check to see if Column E says No Billing Accountif not skip it
{
data.push(rawData[i])
}
}
var tss = SpreadsheetApp.openById('hsgsklllssdllsls'); //replace with destination ID
var ts = tss.getSheetByName('Summary'); //replace with destination Sheet tab name
ts.getRange(ts.getLastRow()+1, 1, data.length, data[0].length).setValues(data);

}
函数过滤器2(){
var sss=SpreadsheetApp.getActiveSpreadsheet();//替换为源ID
var ss=sss.getSheetByName('Users');//替换为源工作表选项卡名称
var range=ss.getRange('A:G');//指定要复制的范围
var rawData=range.getValues()//从电子表格1获取值
var data=[]//筛选后的数据将存储在此数组中
对于(var i=0;i
这是一个过滤器脚本。在这个过滤器中,从源获取的值在A:G范围内,但我只需要获取B列、D列、F列和G列

如何避免过滤A、C、E列?

说明: 选择特定列的一种方法是使用函数

  • 下面将从范围
    A:g
    中获取列
    b、d、f、g

    const rawData=ss.getRange(“A:G”).getValues().map(([,b,d,f,G])=>[b,d,f,G])

不要使用
for
循环对特定列进行筛选。

使用它对特定列进行筛选更有效。您尚未在问题中指定要筛选的列。假设新数据将由列
b、d、f、g
组成,则原始数据的列索引将为
0,1,2,3

例如:

const frawData=rawData.filter(行=>行[3]==“用户丢失”)

这将在列
g
上进行过滤,因为我们已删除
a、c、e
,并且列
g
处于
3
位置(从
0
开始)。如果要在其他列上进行筛选。为
b
选择
0
d
选择
1
f
选择
2
g
选择
3

解决方案:
function filter2() {
const sss = SpreadsheetApp.getActiveSpreadsheet(); //replace with source ID
const ss = sss.getSheetByName('Users'); //replace with source Sheet tab name
const rawData = ss.getRange("A:G").getValues().map(([,b,,d,,f,g]) => [b,d,f,g]); // new code (gets b,d,f,g)
const frawData=rawData.filter(row=>row[3]=="User missing");// 3 means column G. [b,d,f,g] => [0,1,2,3]
const tss = SpreadsheetApp.openById('hsgsklllssdllsls'); //replace with destination ID
const ts = tss.getSheetByName('Summary'); //replace with destination Sheet tab name
ts.getRange(ts.getLastRow()+1, 1, frawData.length, frawData[0].length).setValues(frawData);
}