Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/10.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 无法获取返回ContentService的脚本_Google Apps Script - Fatal编程技术网

Google apps script 无法获取返回ContentService的脚本

Google apps script 无法获取返回ContentService的脚本,google-apps-script,Google Apps Script,我知道这个脚本可能会更好,但我对任何语言的脚本都很陌生,我只是在玩弄工作的想法。这基本上只是谷歌搜索结果的一个弗兰肯斯坦组合,我想实现的目标,但我已经走到了死胡同 我正在使用另一个脚本中的一个方面为webapp返回JSON格式的contentservice,但在本例中它不起作用 据我所知,它应该工作得很好,如果我用下面的browser.msgbox替换return contentservice,我会得到我想要的返回值,但是当使用contentservice并转到指向范围的脚本时,我会得到错误,脚

我知道这个脚本可能会更好,但我对任何语言的脚本都很陌生,我只是在玩弄工作的想法。这基本上只是谷歌搜索结果的一个弗兰肯斯坦组合,我想实现的目标,但我已经走到了死胡同

我正在使用另一个脚本中的一个方面为webapp返回JSON格式的contentservice,但在本例中它不起作用

据我所知,它应该工作得很好,如果我用下面的browser.msgbox替换return contentservice,我会得到我想要的返回值,但是当使用contentservice并转到指向范围的脚本时,我会得到错误,脚本已完成,但没有返回任何内容

var mysheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1sPuqdg0Va9LLQudl2ta23b-CGEF_-FFSTeggRw3J4L4/edit").getSheetByName('Sheet3');
var sheet = SpreadsheetApp.openByUrl("https://docs.google.com/spreadsheets/d/1sPuqdg0Va9LLQudl2ta23b-CGEF_-FFSTeggRw3J4L4/edit").getSheetByName('Sheet1');


function doGet(e){
var action = e.parameter.action;

 if(action == 'Range'){
   return Range(e);
 }
}


function Range(e) {
 let term = 'Customer 6';
 var sdata = mysheet.getRange("A:A").getValues();
 sdata.forEach((val, index) => {
    if(val == term){
        var msgr = "B" + (index+1)
        var msgc = "D" + (index+1)
        var rrow = mysheet.getRange(msgr).getValue();
        var ccol = mysheet.getRange(msgc).getValue();
        var data = sheet.getRange("E" + rrow + ":I"+ccol);  
        var records={};
        var rows = sheet.getRange("E" + rrow + ":I"+ccol).getValues();
        data = []; 
 for (var r = 0, l = rows.length; r < l; r++) {
   var row     = rows[r],
       record  = {};
   record['Product'] = row[0];
   record['Case']=row[2];
   record['Order QTY']=row[3];
   record['Packed']=row[4];
   
   data.push(record);
   
 }
 records.items = data;  
 var result=JSON.stringify(records);
 return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
 // Browser.msgBox(result);
 }})} 
我不明白为什么我得到了msgBox的正确返回值,但是ContentService没有得到结果

任何帮助都将不胜感激。提前谢谢


编辑:我每修订一次都会发布新的webapp版本,这会中断,因为您是从forEach循环中返回的。请查看:

除了抛出异常之外,没有其他方法可以停止或中断forEach循环。如果需要这种行为,forEach方法是错误的工具

最简单的修复方法是使用


这会中断,因为您是从forEach循环中返回的。请查看:

除了抛出异常之外,没有其他方法可以停止或中断forEach循环。如果需要这种行为,forEach方法是错误的工具

最简单的修复方法是使用


你需要在做任何更改后重新发布你的Web应用程序我应该在帖子中提到我现在会更新它,但是是的,每次我做我想测试的更改时我都会重新发布新版本。你需要在做任何更改后重新发布你的Web应用程序我应该在帖子中提到我现在会更新它,但是,是的,每次我要测试的更改都会重新发布新版本。
function Range(e) {
  let term = 'Customer 6';
  var sdata = mysheet.getRange("A:A").getValues();
  for (var index = 0; index < sdata.length; index++) {
    var val = sdata[index];
    if(val == term){
      var msgr = "B" + (index+1)
      var msgc = "D" + (index+1)
      var rrow = mysheet.getRange(msgr).getValue();
      var ccol = mysheet.getRange(msgc).getValue();
      var data = sheet.getRange("E" + rrow + ":I"+ccol);  
      var records={};
      var rows = sheet.getRange("E" + rrow + ":I"+ccol).getValues();
      data = []; 
      for (var r = 0, l = rows.length; r < l; r++) {
        var row     = rows[r],
            record  = {};
        record['Product'] = row[0];
        record['Case']=row[2];
        record['Order QTY']=row[3];
        record['Packed']=row[4];
        
        data.push(record);
        
      }
      records.items = data;  
      var result=JSON.stringify(records);
      return ContentService.createTextOutput(result).setMimeType(ContentService.MimeType.JSON);
    }
  }
}