【问题标题】:TypeError: Cannot read property 'Values' of undefined (line 37, file "Code") - Google Apps ScritTypeError:无法读取未定义的属性“值”(第 37 行,文件“代码”) - Google Apps 脚本
【发布时间】:2020-05-06 04:39:38
【问题描述】:

我创建了一个谷歌应用脚​​本,允许我从谷歌表格创建一些谷歌文档模板。

代码如下:

function createDocument2 () {
  var headers,i,L,scriptProps,tactics;
  var endRowToRange,rangeForDate,sh,sheetTabName,ss,ssFileID,startRowToRange,templateId;
 
  ssFileID = 'Google Sheet File ID';
  templateId = 'Google Doc Template ID';
  sheetTabName = "Google Sheet Tab Name";
  
  ss = SpreadsheetApp.openById(ssFileID);
  sh = ss.getSheetByName(sheetTabName);
  endRowToRange = sh.getLastRow(); //The end row number will always be the last row in the sheet tab
  Logger.log(endRowToRange);
  
  scriptProps = PropertiesService.getScriptProperties();
  
  startRowToRange = scriptProps.getProperty('startRow'); // Where the start row begins for this run of the code  

  /* endRowToRange = endRowToRange.toString(); //Needs to be a string to concatenate the A1 notation */
  
  startRowToRange = startRowToRange.slice(0,startRowToRange.indexOf(".")); // Remove the decimal places FROM THE STRING
  /* endRowToRange = endRowToRange.slice(0,endRowToRange.indexOf(".")); // Remove the decimal places */
  Logger.log(endRowToRange);
  
  if (!startRowToRange) {
    startRowToRange = 2;
  }

  
  rangeForDate = 'A' + startRowToRange + ":I" + endRowToRange; // Build the A1 Notation for the data range


  Logger.log('rangeForDate' + rangeForDate);
  
  // Where we fill the Google Docs template

  
  headers = sh.Spreadsheets.Values.get(ssFileID,'A1:I1');
  tactics = sh.Spreadsheets.Values.get(ssFileID,rangeForDate);

  L = tactics.values.length;
  var i;
  
  for (i = 0; i < L; i ++) {

    Logger.log (tactics);

    var fpn = tactics.values[i][0];
    var nom = tactics.values[i][1];
    var cp = tactics.values[i][2];
    var tel = tactics.values[i][3];
    var email = tactics.values[i][4];
    var type = tactics.values[i][5];
    var prog = tactics.values[i][6];
    var date = tactics.values[i][7];
    var time = tactics.values[i][8];

    var documentId = DriveApp.getFileById(templateId).makeCopy().getId();
    DriveApp.getFileById(documentId).setName(fpn + ' ' + nom.toUpperCase());

    var head = DocumentApp.openById(documentId).getHeader();
    head.replaceText ('##FP##', fpn);

    var body = DocumentApp.openById(documentId).getBody();
    body.replaceText ('##NOM##', nom);
    body.replaceText ('##CP##', cp);
    body.replaceText ('##EMAIL##', email);
    body.replaceText ('##TEL##', tel);
    body.replaceText ('##TYPE##', type);
    body.replaceText ('##PROG##', prog);
    body.replaceText ('##DATE##', date);
    body.replaceText ('##TIME##', time);

  }
  
  // Loop to retreive the values processed before
  
  scriptProps.setProperty('startRow',endRowToRange + 1); // Save new start value
}

我已将此脚本复制到另一个文件夹,但它不再工作,它说“TypeError: Cannot read property 'Values' of undefined (line 37, file "Code") - Google Apps Scrit”。

当我从我的初始文件夹运行它时,它运行良好。

有人对这个问题有想法吗?

提前谢谢你。 马特

【问题讨论】:

  • 你试过换成headers = sh.getRange('A1:I1').getValues(); tactics =sh.getRange(rangeForDate).getValues();
  • 嗨@Ghost,谢谢你的回答。我试过了,但它也不起作用。我不再有错误,但它没有创建我的模板。我是否也应该更改以下值?提前感谢您的帮助。
  • 嗨@matthiew 很难这样看。我真的需要看看你的电子表格,看看它为什么不起作用。也许如果您可以发布示例表的链接并描述您想要实现的目标,我可以提供帮助
  • 嗨@Ghost,谢谢你的回答。我会尽量轻松地向你解释。我有一个接收一些潜在客户的登录页面。所有潜在客户都会自动存储到谷歌表格中。我有 3 个登录页面正在运行,所以在我的 google 表格文件中,我有 3 个选项卡,例如:LP 1、LP 2、LP 3。一旦数据存储在 google 表格中,上面共享的脚本将创建一些潜在页面客户数据自动。该脚本查找添加的新数据,然后创建 google doc 潜在客户页面。
  • @Ghost 我有 3 个文件夹,例如:LP 1、LP 2、LP 3,它们都包含 google doc 模板和脚本,因此可以存储潜在客户页面,我们可以从哪个登录页面知道潜在客户来。在文件夹 LP 1 上,当我运行脚本时,它正在工作。在 LP 2 和 LP 3 文件夹中,脚本正在执行上述错误。

标签: javascript google-apps-script google-sheets google-docs


【解决方案1】:

因此,您需要进行一些更改。

之后

startRowToRange = scriptProps.getProperty('startRow');

添加

if(endRowToRange<startRowToRange) return;

将头球和战术改为

headers = sh.getRange('A1:I1').getValues();
tactics = sh.getRange(rangeForDate).getValues();

而不是 tactic.values 只使用策略

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多