如何结合此代码以生成数据页面

时间:2019-02-04 19:30:49

标签: google-apps-script

我有一组代码,该代码接受一行数据,并在A列中的值变为true时将其移动到新页面(复选框)。
我需要添加将该行数据显示在页面中以进行手动操作的功能。数据可以在演示之前或之后移动。没关系。

这是可以正常工作的代码。

function onEdit(e){
  var ss = SpreadsheetApp.getActive();
  var s = ss.getActiveSheet();
  var r = ss.getActiveRange();
  var row = r.getRow();
  var column = r.getColumn();
  if(s.getName() == "Form Responses 1" && r.getColumn() == 1 && r.getValue() == true) {
  var numColumns = s.getLastColumn();
  var targetSheet = ss.getSheetByName("Processed");
  var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
    s.getRange(row, 1, 1, numColumns).copyTo(target);
    s.deleteRow(row);
  }
}

现在,我从另一个项目中获得了另一个代码,该代码确实将一组数据呈现到页面上。但是我似乎无法弄清楚如何使他们一起工作。 我知道变量在第二组代码中不是可比较的,但是我不知道如何定义它们,因为我无法掌握如何将这两个过程结合起来。

function findAString(){
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getActiveSheet();
  var sh2=ss.getSheetByName('Completed');
  var resp=SpreadsheetApp.getUi().prompt("Enter a String");
  var s=resp.getResponseText();
  if(s){
    var rA=findRow(resp.getResponseText());
    Logger.log(rA);
    if (rA.length>0){
      sh2.getRange(sh2.getLastRow()+1,1,rA.length,rA[0].length).setValues(rA);
      var rows='<br /><h3>Order details have been moved to the Completed tab</h3><br />';
      rows+=Utilities.formatString(resp.getResponseText());
      for(var i=0;i<rA.length;i++){
        rows+=Utilities.formatString('<br /> %s',rA[i].join('<br />'));
      }
      rows+='<br /><br /><input type="button" value="Exit" onClick="google.script.host.close();" />';
      if(rows){
        var ui=HtmlService.createHtmlOutput(rows);
        SpreadsheetApp.getUi().showModelessDialog(ui, 'Search Results')
      }
    }
  }else{
    throw('Error: Invalid Response');
  }
}
function findRow(s) { ;// the actual search function
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var sh = ss.getActiveSheet()
    var rA=[];
    var vA=sh.getDataRange().getValues();
    for(var i=0;i<vA.length;i++) {
      for(var j=0;j<vA[i].length;j++){
        if(vA[i][j].toString().indexOf(s)>-1){
          rA.push(vA[i]);
          break;
        }
      }
    }
    Logger.log(rA);
    return rA;
}

在第二组代码中,提示用户输入字符串,然后找到并显示该字符串。 在此项目中,我需要做的是在用户单击电子表格上的复选框后,将一行数据发送到面板。

我想这与rA变量findRow(resp.getResponseText())有很多关系。在第二组代码中。

从中提取代码的项目会根据用户输入要查找的文本字符串来显示一组数据。但正如您所看到的那样,它是一堆凌乱的代码。

我喜欢将数据传输到另一张纸上的新代码的简单性。我只是似乎无法理清如何根据columnA中的真实情况将同一行数据获取到页面。 帮助吗?

0 个答案:

没有答案