Google apps script google应用程序脚本错误:索引(第7行,第0列)超出范围

Google apps script google应用程序脚本错误:索引(第7行,第0列)超出范围,google-apps-script,Google Apps Script,GAS中的Noob项目,当我发布到web应用程序并查看时,它会生成上面的错误。索引第7行,第0列超出了范围,我从未见过这种情况,我和其他人在执行复杂的数组函数时大多遇到过这个问题。但我觉得这个小家伙很简单。难倒了! 如果你能给我任何帮助,让我指引正确的方向,那就太棒了 var submissionSSKey = '1Ccj_g3HtkHOcdAtn_9LHUxUrbsh5ZJYVUs3hWC9-Cuo'; var docurl = 'https://docs.google.com/spreads

GAS中的Noob项目,当我发布到web应用程序并查看时,它会生成上面的错误。索引第7行,第0列超出了范围,我从未见过这种情况,我和其他人在执行复杂的数组函数时大多遇到过这个问题。但我觉得这个小家伙很简单。难倒了! 如果你能给我任何帮助,让我指引正确的方向,那就太棒了

var submissionSSKey = '1Ccj_g3HtkHOcdAtn_9LHUxUrbsh5ZJYVUs3hWC9-Cuo';
var docurl = 'https://docs.google.com/spreadsheets/d/1Ccj_g3HtkHOcdAtn_9LHUxUrbsh5ZJYVUs3hWC9-Cuo/edit'
var LOCATION = ['Select a Location','A Res','B Res','C Res','D Res','MNT','OSB','TWB','VP','VM','SITE DEV']
var QCREP = ['Select a REP','David','Ryan','Herschell','Bill','Nick ','Stephe','Beth ']
var Shop = ['Select a SHOP','Walls/Ceilings','Plumbing','Electrical','HVAC/Sheet Metal','Carpentry','Interiors','Exteriors','Masonry','Mechanics','Structural']
var ISSUETYPE = ['Select an ISSUE TYPE','Poor Workmanship','Lack of Training','Not Per Plans','Not Per Code','Not Per Spec','Plan Conflict']
var Panelstyle = {'background':'#dddddd','padding':'40px','borderStyle':'solid','borderWidth':'10PX','borderColor':'#bbbbbb'}

function doGet() {
  var app = UiApp.createApplication().setTitle('QC Observation').setStyleAttribute('padding','50PX');
  var panel = app.createFormPanel().setStyleAttributes(Panelstyle).setPixelSize(400, 600);
  var title = app.createHTML('<B>QC Observation</B>').setStyleAttribute('color','grey').setStyleAttribute('fontSize','25PX');
  var grid = app.createGrid(7,2).setId('grid');
  var location = app.createListBox().setName('location').setWidth('130');
   for(var i in LOCATION){location.addItem(LOCATION[i])}    
  var QCREP = app.createListBox().setName('QCREP').setWidth('130');
   for(var i in QCREP){QCREP.addItem(QCREP[i])}  
  var Shop = app.createListBox().setName('Shop').setWidth('130');
   for(var i in Shop){Shop.addItem(Shop[i])}  
  var ISSUETYPE = app.createListBox().setName('ISSUETYPE').setWidth('130');
   for(var i in ISSUETYPE){ISSUETYPE.addItem(ISSUETYPE[i])}    
  var Textbox1 = app.createTextBox().setWidth('200px').setName('TB1');
  var OBDate = app.createDateBox().setWidth('150px').setName('OBdate');
  var FOLLOWDate = app.createDateBox().setWidth('150px').setName('FOLLOwDate');
  var upLoad = app.createFileUpload().setName('uploadedFile');
  var upLoad1 = app.createFileUpload().setName('uploadedFile1');
  var submitButton = app.createSubmitButton('<B>Submit</B>'); 
  var warning = app.createHTML('Please fill in all fields').setStyleAttribute('background','#bbbbbb').setStyleAttribute('fontSize','18px');
  //file upload
  var cliHandler2 = app.createClientHandler()
  .validateLength(Textbox1, 1, 40).validateNotMatches(location,'Select a LOCATION').validateNotMatches(upLoad, 'FileUpload');


  var cliHandler3 = app.createClientHandler()
  .validateNotMatches(upLoad1, 'FileUpload').forTargets(submitButton).setEnabled(true)
  .forTargets(warning).setHTML('Now you can submit your form').setStyleAttribute('background','#99FF99').setStyleAttribute('fontsize','12px');

  var cliHandler4 = app.createClientHandler()
  .validateLength(Textbox1, 1, 250).validateNotMatches(location,'Select a LOCATION').validateNotMatches(upLoad, 'FileUpload');

  //Grid layout of items on form
  grid.setWidget(0, 1, title)
      .setText(1, 0, 'LOCATION')
      .setWidget(1, 1, location.addClickHandler(cliHandler2))
      .setText(2, 0, 'QC REP')
      .setWidget(2, 1, QCREP.addClickHandler(cliHandler2))
      .setText(3, 0, 'SHOP RESPONSIBLE')
      .setWidget(3, 1, Shop.addClickHandler(cliHandler2))
      .setText(4, 0, 'ISSUE TYPE')
      .setWidget(4, 1, ISSUETYPE.addClickHandler(cliHandler2))
      .setText(5, 0, 'OBSERVATION')
      .setWidget(5, 1, Textbox1.addClickHandler(cliHandler4))
      .setText(6, 0, 'OBSERVATION DATE')
      .setWidget(6, 1, OBDate.addValueChangeHandler(cliHandler2))
      .setText(7, 0, 'FOLLOW UP DATE')
      .setWidget(7, 1, FOLLOWDate.addValueChangeHandler(cliHandler2))
      .setText(8, 0, 'IMAGE FILE')
      .setWidget(8, 1, upLoad.addChangeHandler(cliHandler2))
      .setWidget(9, 1, upLoad1.addChangeHandler(cliHandler3))
      .setWidget(11, 0, submitButton)
      .setWidget(11, 1, warning);

  var cliHandler = app.createClientHandler().forTargets(warning).setHTML('<B>PLEASE WAIT WHILE THE FILE IS UPLOADING<B>').setStyleAttribute('background','orange');
  submitButton.addClickHandler(cliHandler).setEnabled(false);  
  panel.add(grid);
  app.add(panel);
  return app;
}


function doPost(e) {
  Logger.log('Value of e is: ' + e);
  var app = UiApp.getActiveApplication();
  var ListVal = e.parameter.location;
  var ListVal = e.parameter.QCREP;
  var ListVal = e.parameter.Shop;
  var ListVal = e.parameter.ISSUETYPE;
  var textVal = e.parameter.TB1;
  var dateVal = e.parameter.OBDate;
  var dateVal2 = e.parameter.FOLLOWDate;
  var fileBlob1 = e.parameter.uploadedFile;
  var blob1 = fileBlob1.setContentTypeFromExtension()
  var img1 = DocsList.createFile(blob1);
  var fileBlob2 = e.parameter.uploadedFile1;
  var blob2 = fileBlob2.setContentTypeFromExtension()
  var img2 = DocsList.createFile(blob2);
  try{
  var folder = DocsList.getFolder('photos');
  }catch(e){DocsList.createFolder('photos');var folder = DocsList.getFolder('photos')}
  img1.addToFolder(folder);
  img1.removeFromFolder(DocsList.getRootFolder());
  img2.addToFolder(folder);
  img2.removeFromFolder(DocsList.getRootFolder());
  var weight1 = parseInt(img1.getSize()/1000);
  var weight2 = parseInt(img2.getSize()/1000);
  var sheet = SpreadsheetApp.openById(submissionSSKey).getSheetByName('Sheet1');
  var lastRow = sheet.getLastRow();
  var targetRange = sheet.getRange(lastRow+1, 1, 1, 5).setValues([[ListVal,textVal,dateVal,"https://drive.google.com/uc?export=view&id="+img1.getId(),"https://drive.google.com/uc?export=view&id="+img2.getId()]]);
  var image1Insert = sheet.getRange(lastRow+1, 6).setFormula('=image("https://drive.google.com/uc?export=view&id='+img1.getId()+'")');
  var image2Insert = sheet.getRange(lastRow+1, 7).setFormula('=image("https://drive.google.com/uc?export=view&id='+img2.getId()+'")');
  sheet.setRowHeight(lastRow+1, 80);
  var GDoc = DocumentApp.openByUrl(docurl)
  GDoc.appendTable([['LOCATION : '+ListVal,'QCREP : '+ListVal,'SHOP : '+ListVal,'ISSUE TYPE : '+ListVal,'OBSERVATION : '+textVal,'OBDate : '+dateVal,'FOLLOWDate : '+dateVal2]])
  var inlineI = GDoc.appendImage(img1);
  var width = inlineI.getWidth();
  var newW = width;
  var height = inlineI.getHeight();
  var newH = height;
  var ratio = width/height;
  Logger.log('w='+width+'h='+height+' ratio='+ratio);
  if(width>640){
  newW = 640;
  newH = parseInt(newW/ratio);
  }
  inlineI.setWidth(newW).setHeight(newH)
  GDoc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW ('+weight1+' kB)   ');
  var inlineI = GDoc.appendImage(img2);
  var width = inlineI.getWidth();
  var newW = width;
  var height = inlineI.getHeight();
  var newH = height;
  var ratio = width/height;
  Logger.log('w='+width+'h='+height+' ratio='+ratio);
  if(width>640){
  newW = 640;
  newH = parseInt(newW/ratio);
  }
  inlineI.setWidth(newW).setHeight(newH)
  GDoc.appendParagraph('IMAGE size : '+width+' x '+height+' (eventually) resized to '+newW+' x '+newH+' for PREVIEW ('+weight2+' kB)   ');
  GDoc.appendHorizontalRule();
  GDoc.saveAndClose();
  app.add(app.createLabel('Thank you for submitting'));
  return app
}

因为这一行:

var grid = app.createGrid(7,2).setId('grid');
网格中的行没有索引。第一行是索引0。第七行是索引6。您正在创建七行,这意味着您只能按索引引用一行,最多可达数字6

当运行第55行上的这行代码时:

.setText(7, 0, 'FOLLOW UP DATE')
它指的是第八排,它不存在。不能将文本项设置为不存在的行,因为它超出了范围

您需要将网格更改为12行:

var grid = app.createGrid(12,2).setId('grid');

Ui服务已弃用。您正在为将来可能不受支持的内容做大量的工作。

是的,我知道它不受欢迎,但没有人告诉我如何在新版本中做同样的事情,提示提示Alli如果我提供了正确的答案,请将其标记为正确答案并进行投票,以表示您的感谢。请随时访问我的个人资料页面,并给我发送电子邮件。汉克斯·桑迪,一旦我符合资格,我会将其标记为正确:现在我需要更多的代表点来投票-同时,如果你有一分钟的时间,我仍在处理这个问题,这是一个新问题