Этот код работает отлично. Я просто не понимаю почему.
Может кто-нибудь объяснить, как функция 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);
}