"文件丢失(也许它被删除了?)"参考刚刚创建的文档

时间:2017-06-17 19:37:50

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

我的脚本创建了一个文档,将文档URL存储在电子表格的单元格中,然后另一个函数使用该URL打开所述文档。我得到了#34;文件丢失了#34;大约70%的时间我尝试运行它时出错。有任何想法吗?失败在第52行。



function resultsDoc() {
  var ssa = SpreadsheetApp;
  var ss = ssa.getActiveSpreadsheet();
  var sheets = ss.getSheets();


  var ui = ssa.getUi();


  var doca = DocumentApp;
  var drive = DriveApp;
  var template = "1uSCtqPwDYM-AtGAu3kzv3ZD0jdXnl12GxmdF_BDNb-M";
  var source = doca.openById(template);
  var resDocCopy = drive.getFileById(template).makeCopy('Tournament Results');
  var resDocId = resDocCopy.getId();
  var resDoc = doca.openById(resDocId);
  var docBody = resDoc.getBody();
  var resDocUrl = resDoc.getUrl();
  sheets.shift();
  for (var dis in sheets) {
    var thisSheet = sheets[dis];
    var letters = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "f"];
    var disLetter = letters[dis];
    var eventa = thisSheet.getName();
    var aOne = thisSheet.getRange('B3').getValue() + "  " + thisSheet.getRange('A3').getValue();
    var aTwo = thisSheet.getRange('B4').getValue() + "  " + thisSheet.getRange('A4').getValue();
    var aThree = thisSheet.getRange('B5').getValue() + "  " + thisSheet.getRange('A5').getValue();
    var aFour = thisSheet.getRange('B6').getValue() + "  " + thisSheet.getRange('A6').getValue();
    var aFive = thisSheet.getRange('B7').getValue() + "  " + thisSheet.getRange('A7').getValue();
    var aSix = thisSheet.getRange('B8').getValue() + "  " + thisSheet.getRange('A8').getValue();

    docBody.replaceText('<<' + disLetter + '>>', eventa);
    docBody.replaceText('<<' + disLetter + '1>>', aOne);
    docBody.replaceText('<<' + disLetter + '2>>', aTwo);
    docBody.replaceText('<<' + disLetter + '3>>', aThree);
    docBody.replaceText('<<' + disLetter + '4>>', aFour);
    docBody.replaceText('<<' + disLetter + '5>>', aFive);
    docBody.replaceText('<<' + disLetter + '6>>', aSix);

  }
  ss.insertSheet("Links");
  var linksSheet = ss.getSheetByName("Links");
  linksSheet.getRange(1, 1).setValue("Link to results page:");
  linksSheet.getRange(2, 1).setValue(resDocUrl);
  Utilities.sleep(9000);

}

function sweepsDoc() {
  var doca = DocumentApp;
  var linksSheet = ss.getSheetByName("Links");
  var resDocUrl = linksSheet.getRange(2, 1).getValue();
  var resDoc = doca.openByUrl(resDocUrl);
  var docBody = resDoc.getBody();

  var sweepsSheet = ss.getSheetByName('Sweeps');

  docBody.replaceText("<<sweeps1>>", sweepsSheet.getRange('B2').getValue());
  docBody.replaceText("<<sweeps2>>", sweepsSheet.getRange('B3').getValue());
  docBody.replaceText("<<sweeps3>>", sweepsSheet.getRange('B4').getValue());


}
&#13;
&#13;
&#13;

2 个答案:

答案 0 :(得分:2)

好吧 - 所以我想出了一个“解决方法”,而不是一个实际的解决方案。我没有存储和访问文档Url,而是切换到使用文档的Id。 虽然我仍然不明白为什么Url会导致它失去对文档的跟踪,但使用Id在20次尝试中的成功率为100%,而使用Url的成功率仅为20%。 如果你知道使用网址有什么问题,请告诉我。如果您遇到同样的问题,请切换代码以使用doc id。

答案 1 :(得分:1)

我不是百分百肯定,但我认为不保存文档可能会导致问题。

将以下行添加到构建文档的代码的末尾。

resDoc.saveAndClose();
相关问题