Как вызывается функция с параметром `findRow (s)` для конкретного скрипта? - PullRequest
0 голосов
/ 09 января 2019

Этот код работает отлично. Я просто не понимаю почему. Может кто-нибудь объяснить, как функция findRow(s) "вызывается"?
Я не вижу, что заставляет функцию findRow(s) работать.

Я вижу, как они определили var rA=findRow(resp.getResponseText());

Мне кажется, не имеет смысла запускать эту функцию. Я, очевидно, очень зеленый в этом ... делает ли просто определение переменной, что следующая функция "работает"?
Или это Logger.log часть, которая начинает работу?

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(s);
    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;
        }
      }
    }
    return rA;
  var sourcesheet = ss.getSheetByName('Form Responses 2');
  var targetsheet = ss.getSheetByName('Completed');
  var targetrange = targetsheet.getRange(targetsheet.getLastRow(), 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn());
  var rangeValues = sourcesheet.getRange(2, 1, sourcesheet.getLastRow(), sourcesheet.getLastColumn()).getValues();
   targetrange.setValues(rangeValues);
}

1 Ответ

0 голосов
/ 09 января 2019

Как вы уже упоминали, функция findRow вызывается

var rA=findRow(resp.getResponseText());

Учитывая, что в нескольких строках кода это var s=resp.getResponseText();, вы можете переписать его, чтобы сохранить некоторые символы, подобные этому:

 var rA=findRow(s);

Над линией выше

 var resp=SpreadsheetApp.getUi().prompt("Enter a String");

Эта строка назначает объект PromptResponse для resp. Объект PromptResponse имеет метод getResponseText(), который возвращает объект String.

Logger.log(rA) просто записывает значение String в журнал.

Ссылки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...