很抱歉,发生服务器错误。请稍等,然后重试。 (第63行,文件“代码”)

时间:2019-07-29 01:19:52

标签: google-apps-script

预先感谢您的帮助。

我正在尝试将最新提交的数据从Google Form / Google表格转换为“模板” Google文档。基本上,当用户提交表单时,它将转换Google表格中的数据并创建一个新的Google文档。

旁注:我并不是真正的编码人员。.我在线找到了基本脚本,并尝试对其进行相应的修改。如果可以的话,我将不胜感激。

再次感谢您

function createDocument() {
  var headers = Sheets.Spreadsheets.Values.get('SHEET-ID', 'A1:AU1');
var tactics = Sheets.Spreadsheets.Values.get('SHEET-ID', 'A2:AU2');
var templateId = 'DOCTEMPLATE-ID';
  
  for(var i = 0; i < tactics.values.length; i++){
    
    var Fclient = tactics.values[i][0];
    var Lclient = tactics.values[i][1];
    var birthday = tactics.values[i][2];
    var profession = tactics.values[i][3];
    var email = tactics.values[i][4];
    var phone = tactics.values[i][5];
    var whatsapp = tactics.values[i][6];
    var preferredcontact = tactics.values[i][7];
    var UScitizen = tactics.values[i][8];
    var Ocitizen = tactics.values[i][9];
    var Tsapre = tactics.values[i][10];
    var Pairplane = tactics.values[i][11];
    var Photelamen = tactics.values[i][12];
    var FFlyer = tactics.values[i][13];
    var hotelloy = tactics.values[i][14];
    var vistedcountries = tactics.values[i][15];
    var smoke = tactics.values[i][16];
    var allergies = tactics.values[i][17];
    var Othermed = tactics.values[i][18];
    var addANOTHER = tactics.values[i][19];
    var emergencyname = tactics.values[i][20];
    var emergencyphone = tactics.values[i][21];
    var emergencyrelation = tactics.values[i][22];
    var emergencyname2 = tactics.values[i][23];
    var emergencyphone2 = tactics.values[i][24];
    var emergencyrelation2 = tactics.values[i][25];
    var comptravelmag = tactics.values[i][26];
    var secondaryFname = tactics.values[i][27];
    var secondaryLname = tactics.values[i][28];
    var secondarybirthday = tactics.values[i][29];
    var secondaryprofession = tactics.values[i][30];
    var secondaryemail = tactics.values[i][31];
    var secondaryphone = tactics.values[i][32];
    var secondarywhatsapp = tactics.values[i][33];
    var secondarypreferredcontact = tactics.values[i][34];
    var secondaryUScitizen = tactics.values[i][35];
    var secondaryOcitizen = tactics.values[i][36];
    var secondaryTsapre = tactics.values[i][37];
    var secondaryPairplane = tactics.values[i][38];
    var secondaryPhotelamen = tactics.values[i][39];
    var secondaryFFlyer = tactics.values[i][40];
    var secondaryhotelloy = tactics.values[i][41];
    var secondaryvistedcountries = tactics.values[i][42];
    var secondarysmoke = tactics.values[i][43];
    var secondaryallergies = tactics.values[i][44];
    var secondaryOthermed = tactics.values[i][45];
       var timestamp = tactics.values[i][46];
    
    //Make a copy of the template file
    var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
    
    //Rename the copied file
    DriveApp.getFileById(documentId).setName('Basic Information: ' + Lclient + 'test');
    
    //Get the document body as a variable. 
    var body = DocumentApp.openById(documentId).getBody(); **ERROR HERE**
    
    //Insert the supplier name
    body.replaceText('{{Fcilent}}', Fclient);
body.replaceText('{{Lcilent}}',	Lclient);
body.replaceText('{{birthday}}', birthday);
body.replaceText('{{profession}}', profession);
body.replaceText('{{email}}', email);
body.replaceText('{{phone}}', phone);
body.replaceText('{{whatsapp}}', whatsapp);
body.replaceText('{{preferredcontact}}', preferredcontact);
body.replaceText('{{UScitizen}}', UScitizen);
body.replaceText('{{Ocitizen}}', Ocitizen);
body.replaceText('{{Tsapre}}', Tsapre);
body.replaceText('{{Pairplane}}', Pairplane);
body.replaceText('{{Photelamen}}', Photelamen);
body.replaceText('{{FFlyer}}', FFlyer);
body.replaceText('{{hotelloy}}', hotelloy);
body.replaceText('{{vistedcountries}}', vistedcountries);
body.replaceText('{{smoke}}', smoke);
body.replaceText('{{allergies}}', allergies);
body.replaceText('{{Othermed}}', Othermed);
body.replaceText('{{addANOTHER}}', addANOTHER);
body.replaceText('{{emergencyname}}', emergencyname);
body.replaceText('{{emergencyphone}}', emergencyphone);
body.replaceText('{{emergencyrelation}}', emergencyrelation);
body.replaceText('{{emergencyname2}}', emergencyname2);
body.replaceText('{{emergencyphone2}}', emergencyphone2);
body.replaceText('{{emergencyrelation2}}', emergencyrelation2);
body.replaceText('{{comptravelmag}}', comptravelmag);
body.replaceText('{{secondaryFname}}', secondaryFname);
body.replaceText('{{secondaryLname}}', secondaryLname);
body.replaceText('{{secondarybirthday}}', secondarybirthday);
body.replaceText('{{secondaryprofession}}', secondaryprofession);
body.replaceText('{{secondaryemail}}', secondaryemail);
body.replaceText('{{secondaryphone}}', secondaryphone);
body.replaceText('{{secondarywhatsapp}}', secondarywhatsapp);
body.replaceText('{{secondarypreferredcontact}}', secondarypreferredcontact);
body.replaceText('{{secondaryUScitizen}}', secondaryUScitizen);
body.replaceText('{{secondaryOcitizen}}', secondaryOcitizen);
body.replaceText('{{secondaryTsapre}}', secondaryTsapre);
body.replaceText('{{secondaryPairplane}}', secondaryPairplane);
body.replaceText('{{secondaryPhotelamen}}', secondaryPhotelamen);
body.replaceText('{{secondaryFFlyer}}', secondaryFFlyer);
body.replaceText('{{secondaryhotelloy}}', secondaryhotelloy);
body.replaceText('{{secondaryvistedcountries}}', secondaryvistedcountries);
body.replaceText('{{secondarysmoke}}', secondarysmoke);
body.replaceText('{{secondaryallergies}}', secondaryallergies);
body.replaceText('{{secondaryOthermed}}', secondaryOthermed);
body.replaceText('{{timestamp}}', timestamp);	
        
    //Append tactics
    parseTactics(headers.values[0], tactics.values[i], body);
    
  }

}

function parseTactics(headers, tactics, body){ 
  
  for(var i = 1; i < tactics.length; i++){
    {tactics[i] != '' && 
      body.appendListItem(headers[i] + ' | ' + tactics[i] + ' OTHER').setGlyphType(DocumentApp.GlyphType.BULLET);
    }
    
  }
}

错误:“很抱歉,发生服务器错误。请稍候,然后重试。(第63行,文件“代码”)”

我希望该脚本能够从数据表中生成一个新的google doc,因为它正在google表单上提交。

1 个答案:

答案 0 :(得分:0)

我认为你很亲密。这是我做的一个例子。

首先,我创建了一个函数来为自己生成一些数据。

function testData() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();
  sh.clearContents();
  var rg=sh.getRange(1,1,10,10);
  var vA=rg.getValues();
  for(var i=0;i<vA.length;i++) {
    for(var j=0;j<vA[i].length;j++) {
      vA[i][j]=Utilities.formatString('row: %s - col: %s',i+1,j+1);
    }
  }
  rg.setValues(vA);
}

上面的函数创建一个看起来像这样的工作表:

enter image description here

模板文件如下所示:

enter image description here

运行此代码后:

function createDoc(){
  var spreadsheetId='spreadsheet Id';
  var templateId='template Id';
  var data=Sheets.Spreadsheets.Values.get(spreadsheetId,'Sheet177!A1:J2');//range include sheet name
  var docId=DriveApp.getFileById(templateId).makeCopy('Test').getId();
  var body=DocumentApp.openById(docId).getBody();

  for(var i=0;i<data.values.length;i++) {
    for(var j=0;j<data.values[i].length;j++) {
      var s=Utilities.formatString('{{col%s-%s}}',i+1,j+1);
      body.replaceText(s,data.values[i][j]);
    }             
  }
}

在同一文件夹中出现另一个名为test的文件,如下所示:

enter image description here

我必须说,确定是获取数据的简单方法。

我想知道您是否只是没有在脚本编辑器中对程序进行身份验证。