【问题标题】:We're sorry, a server error occurred. Please wait a bit and try again. (line 63, file "Code")很抱歉,发生服务器错误。请稍等,然后重试。 (第 63 行,文件“代码”)
【发布时间】:2019-12-06 08:13:53
【问题描述】:

提前感谢您的帮助。

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

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

再次感谢您

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 文档,因为它是在 google 表单上提交的。

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    我认为你很接近。这是我做的一个例子。

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

    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);
    }
    

    上面的函数创建了一个如下所示的工作表:

    模板文件如下所示:

    运行这段代码后:

    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 的文件,如下所示:

    我必须说,这肯定是一种获取数据的简单方法。

    我有点想知道您是否只是没有在脚本编辑器中验证程序。

    【讨论】:

    • 谢谢 Cooper,我已经验证了 Sheets API 并授予脚本访问文档的权限。当我用项目符号列出数据时它正在工作,但是一旦我添加了更多的“var ids”和“replacetext”并将模板化的文档编辑成更“有组织”的东西,它就会显示该错误。模板是否可能包含太多占位符?目前我有它:姓名:{{Fcilent}} 职业:{{profession}} 最后:{{Lcilent}} 电子邮件:{{email}} 生日:{{birthday}} 两栏。
    • 我不这么认为。它们只是字符串。
    猜你喜欢
    • 2017-05-02
    • 2020-12-07
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多