如何修复 Google Apps 脚本中的此脚本以创建有关日期范围的按钮?

问题描述 投票:0回答:1

输入姓名后是否可以请求特定月份的数据?例如,我输入

"September 2024"
后,会显示该月的所有记录吗?

function showInputBox(){

 var ui = SpreadsheetApp.getUi();
 var input = ui.prompt("Please enter your First Name.",ui.ButtonSet.OK_CANCEL);

if(input.getSelectedButton() == ui.Button.OK){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var ws = ss.getSheetByName("Monitoring (Database)");
  var data = ws.getRange("A2:X" + ws.getLastRow()).getValues();
  var userSelectedRep = input.getResponseText().toLowerCase();
  var newData = data.filter(function(r){ return r[23] .toLowerCase() == userSelectedRep});
  var selectedColumns = newData.map(function (r) {
    return [r[10], r[9], r[1], r[17], r[18], r[19], r[20], r[21], r[22]];
  });


  if (newData.length > 0){
  var newWs = ss.insertSheet(userSelectedRep);
  newWs.getRange(3, 3, selectedColumns.length, selectedColumns[0].length).setValues(selectedColumns);
  var headers = ["PLATFORM", "TYPE OF ACCESS", "INSTITUTION", "QUANTITY/ACCESS CODE", "START DATE", "START TIME", "END DATE", "END TIME", "TOTAL TIME"];
  newWs.getRange (3, 3, 1, headers.length).setValues([headers]);
  } else {
    ui.alert ("No Matching data found for the entered name.");
  } 
  
  } else {
    ui.alert("Operation Canceled.");
  }
}

输入姓名后,我将被引导到下一个按钮,我可以在其中输入月份

Name button

google-sheets google-apps-script
1个回答
0
投票

使用提示获取过滤器参数

您可以尝试下面的代码,这是一个修改版本,其中包括月份和年份的第二个提示。

代码:

function showInputBox() {
  var ui = SpreadsheetApp.getUi();
  var input = ui.prompt("Please enter your First Name.", ui.ButtonSet.OK_CANCEL);

  if (input.getSelectedButton() == ui.Button.OK) {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var ws = ss.getSheetByName("Monitoring (Database)");
    var data = ws.getRange("A2:X" + ws.getLastRow()).getValues();
    var userSelectedRep = input.getResponseText().toLowerCase();

    var newData = data.filter(function (r) {
      return r[23].toLowerCase() == userSelectedRep;
    });

    var monthInput = ui.prompt("Please enter the month and year (e.g., September 2024):", ui.ButtonSet.OK_CANCEL);

    if (monthInput.getSelectedButton() == ui.Button.OK) {
      var selectedMonth = monthInput.getResponseText();
      var filteredMonthData = newData.filter(function (r) {
        var date = new Date(r[18]);
        return date.toLocaleString('default', { month: 'long', year: 'numeric' }) === selectedMonth;
      });

      var selectedColumns = filteredMonthData.map(function (r) {
        return [r[10], r[9], r[1], r[17], r[18], r[19], r[20], r[21], r[22]];
      });

      if (filteredMonthData.length > 0) {
        var newWs = ss.insertSheet(userSelectedRep);
        var headers = ["PLATFORM", "TYPE OF ACCESS", "INSTITUTION", "QUANTITY/ACCESS CODE", "START DATE", "START TIME", "END DATE", "END TIME", "TOTAL TIME"];

        newWs.getRange(4, 3, selectedColumns.length, selectedColumns[0].length).setValues(selectedColumns);
        newWs.getRange(3, 3, 1, headers.length).setValues([headers]);

      } else {
        ui.alert("No matching data found for the entered month.");
      }
    } else {
      ui.alert("Month input canceled.");
    }
  } else {
    ui.alert("Operation Canceled.");
  }
}

示例输出:

Monitoring Database

Sample output1

Sample output2

参考文献:

© www.soinside.com 2019 - 2024. All rights reserved.