Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.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
Google apps script 编写基于多个阈值的公式/脚本&;将其应用于多行_Google Apps Script_Google Sheets_Excel Formula - Fatal编程技术网

Google apps script 编写基于多个阈值的公式/脚本&;将其应用于多行

Google apps script 编写基于多个阈值的公式/脚本&;将其应用于多行,google-apps-script,google-sheets,excel-formula,Google Apps Script,Google Sheets,Excel Formula,我正在尝试写一个公式或脚本,需要两个输入,一个学生的出勤率和GPA,并吐出他们的跟踪评分,如这里所述 我还使用了文档中建议的map方法,但是第一个元素未定义时出现了一个错误。我不熟悉map方法,所以我的问题可能就在那里 function ONTRACK2(input){ if (input.map) { // Test whether input is an array. return input.map(ONTRACK2); // Recurse over ar

我正在尝试写一个公式或脚本,需要两个输入,一个学生的出勤率和GPA,并吐出他们的跟踪评分,如这里所述

我还使用了文档中建议的map方法,但是第一个元素未定义时出现了一个错误。我不熟悉map方法,所以我的问题可能就在那里

function ONTRACK2(input){
  if (input.map) {         // Test whether input is an array.
    return input.map(ONTRACK2); // Recurse over array if so.
  } else {
    // do actual function work here
    return ONTRACK(input[0][0]*100, input[0][1])

  }
 };
GPA也有类似的功能,我计算GPA时没有错误:

function GPA2(input){
  if (input.map) {         // Test whether input is an array.
    return input.map(GPA2); // Recurse over array if so.
  } else {
    // do actual function work here
     return myAverage(getPoints(input[0][0]), getPoints(input[0][1]), getPoints(input[0][2]), getPoints(input[0][4]))

  }
};
另一个基于脚本的想法是通过迭代构建某种数组对象,存储“正常”值,然后将它们写入正确的列

2。这是否可以在没有应用脚本的情况下完成,而改为在工作表中使用公式?

我在玩模糊查找

我做了一张参考表

这些是我尝试过的公式,其中G列和H列分别是我的出勤率和GPA

=INDEX('Reference Table'!F2:F20,MATCH(2,INDEX(1/(('Reference Table'!D2:D20=G2)*('Reference Table'!E2:E20<=H2)),0)))

=ArrayFormula(INDEX('Reference Table'!$F$2:$F$20,MAX(ROW('Reference Table'!$D$2:$D$20)*(('Reference Table'!$D$2:$D$20)=G2)*(('Reference Table'!$E$2:$E$20)<=H16))))

=INDEX('Reference Table'!F2:F20,MATCH(2,INDEX(1/('Reference Table'!D2:D20=G2)*)('Reference Table'!E2:E20我不确定工作表公式,但您可以使用应用程序脚本执行此操作

转到,在菜单上单击“查找学生轨迹”和“计算轨迹”。列“p”将填充学生轨迹数据。瞧

这是我的职责

function FindMyTrack()
{

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var student = ss.getSheetByName("StudentData");//select sheets
  var refer = ss.getSheetByName("Reference Table");//select sheets
  var stData = student.getRange(2, 7, student.getLastRow(), 2).getValues();// get sheet data
  var refData = refer.getRange('D2:F20').getValues();// get sheet data
  var tracks = [];
  //checking each student attendance and GPA with reference data
  for(var n in stData ){ 
    for(var p in refData){ 
      if( stData[n][0] >= refData[p][0] && stData[n][1] >= refData[p][1]){
        tracks.push([refData[p][2]]);//save matched value in an array
        break;
      }
    }
  }
  // setting saved track data in the "P"  (16) column
  student.getRange(2, 16, tracks.length, 1).setValues(tracks);
}
您可以检查工作表的关联代码(“GPA”)以进行更改

=INDEX('Reference Table'!F2:F20,MATCH(2,INDEX(1/(('Reference Table'!D2:D20=G2)*('Reference Table'!E2:E20<=H2)),0)))

=ArrayFormula(INDEX('Reference Table'!$F$2:$F$20,MAX(ROW('Reference Table'!$D$2:$D$20)*(('Reference Table'!$D$2:$D$20)=G2)*(('Reference Table'!$E$2:$E$20)<=H16))))
function FindMyTrack()
{

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var student = ss.getSheetByName("StudentData");//select sheets
  var refer = ss.getSheetByName("Reference Table");//select sheets
  var stData = student.getRange(2, 7, student.getLastRow(), 2).getValues();// get sheet data
  var refData = refer.getRange('D2:F20').getValues();// get sheet data
  var tracks = [];
  //checking each student attendance and GPA with reference data
  for(var n in stData ){ 
    for(var p in refData){ 
      if( stData[n][0] >= refData[p][0] && stData[n][1] >= refData[p][1]){
        tracks.push([refData[p][2]]);//save matched value in an array
        break;
      }
    }
  }
  // setting saved track data in the "P"  (16) column
  student.getRange(2, 16, tracks.length, 1).setValues(tracks);
}