【问题标题】:App Script last row getting issue new to GASApp Script 最后一行得到 GAS 的新问题
【发布时间】:2021-09-21 14:11:42
【问题描述】:

我正在处理包含数据库的工作表,并且我复制了一个脚本,每次用户提交任何数据时,它都会在脚本的帮助下从该行生成 pdf。它的工作顺利,但问题是当我运行脚本时,它会从第 1 行再次开始,并再次制作重复的 pdf。所以我对所有人的请求请帮助我,我只希望它应该获取最后一行是新的。不要从第一行开始这里是代码请帮助我。

function billPdf() {
const pdfFolder = DriveApp.getFolderById("17Wyo_wHI1p_zNrEQWnay7pbb_3WS8Sivw");
const tempFolder = DriveApp.getFolderById("1CiEPOh7X82M5jpupYtYqBdnlYIzlSRCjb");
const tempDoc = DriveApp.getFileById("1IZr8ovAMOV1z2ADfXHjKvvHNOzMSW1T4WwC0XPd7_OeQ");
const currentSheet =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TT");  
const data = currentSheet.getRange(2, 1,currentSheet.getLastRow()-1,73).getDisplayValues();
  let errors =[];
  data.forEach(row => {
  try{
  createPdf(row[0],row[1],row[2],row[3],row[4],row[5],row[13],row[14],row[15],row[16],row[17],row[23],row[24],row[25],row[26],row[27],row[33],row[34],row[35],row[36],row[37],row[43],row[44],row[45],row[46],row[47],row[49],row[69],row[11],pdfFolder,tempFolder,tempDoc,row[0]);
  errors.push["Done"];
 } catch(err){
 errors.push(["Failed"]);
  }
});
   currentSheet.getRange(2, 71,currentSheet.getLastRow()-1,1).setValue(errors);
}
function createPdf(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,aa,ab,ac,pdfFolder,tempFolder,tempDoc,pdfname) {
const newtemplateFile = tempDoc.makeCopy(tempFolder);
const openDoc = DocumentApp.openById(newtemplateFile.getId());
const body = openDoc.getBody();
const currentSheet1 =SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TT");  
body.replaceText("{invoice}", a);
body.replaceText("{date}", b);
body.replaceText("{type}", c);
body.replaceText("{contact}", d);
body.replaceText("{name}", e);
body.replaceText("{email}", f);
body.replaceText("{p1}", g);
body.replaceText("{p2}", h);
body.replaceText("{p3}", i);
body.replaceText("{p4}", j);
body.replaceText("{p5}", k);
body.replaceText("{q1}", l);
body.replaceText("{q2}", m);
body.replaceText("{q3}", n);
body.replaceText("{q4}", o);
body.replaceText("{q5}", p);
body.replaceText("{mr1}", q);
body.replaceText("{mr2}", r);
body.replaceText("{mr3}", s);
body.replaceText("{mr4}", t);
body.replaceText("{mr5}", u);
body.replaceText("{to1}", v);
body.replaceText("{to2}", w);
body.replaceText("{to3}", x);
body.replaceText("{to4}", y);
body.replaceText("{to5}", z);
body.replaceText("{subt}", aa);
body.replaceText("{add}", ab);
body.replaceText("{foe}", ac);
openDoc.saveAndClose();
const bolbPDF = newtemplateFile.getAs(MimeType.PDF);
const pdfFile = pdfFolder.createFile(bolbPDF).setName(pdfname);
tempFolder.removeFile(newtemplateFile);
return pdfFile;
}

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    我相信你的目标如下。

    • 您想从工作表“TT”的最后一行检索值并将这些值用于函数“createPdf”。

    这样的话,下面的修改怎么样?

    发件人:

    const data = currentSheet.getRange(2, 1,currentSheet.getLastRow()-1,73).getDisplayValues();
    let errors = [];
    data.forEach(row => {
      try {
        createPdf(row[0], row[1], row[2], row[3], row[4], row[5], row[13], row[14], row[15], row[16], row[17], row[23], row[24], row[25], row[26], row[27], row[33], row[34], row[35], row[36], row[37], row[43], row[44], row[45], row[46], row[47], row[49], row[69], row[11], pdfFolder, tempFolder, tempDoc, row[0]);
        errors.push["Done"];
      } catch (err) {
        errors.push(["Failed"]);
      }
    });
    currentSheet.getRange(2, 71, currentSheet.getLastRow() - 1, 1).setValue(errors);
    

    收件人:

    const row = currentSheet.getRange(currentSheet.getLastRow(), 1, 1, 73).getDisplayValues()[0];
    let error = "";
    try {
      createPdf(row[0],row[1],row[2],row[3],row[4],row[5],row[13],row[14],row[15],row[16],row[17],row[23],row[24],row[25],row[26],row[27],row[33],row[34],row[35],row[36],row[37],row[43],row[44],row[45],row[46],row[47],row[49],row[69],row[11],pdfFolder,tempFolder,tempDoc,row[0]);
      error = "Done";
    } catch (err) {
      error = "Failed";
    }
    currentSheet.getRange(currentSheet.getLastRow(), 71).setValue(error);
    
    • data 是工作表“TT”的最后一行。该行的值用于函数createPdf

    参考资料:

    【讨论】:

    • 非常感谢您在我的以下脚本中回答一切都很好,但问题是当我尝试运行代码时,它从第一行开始,并再次制作重复的 pdf。
    • @Sam Lam 感谢您的回复。从so my request to all pls help me i want only its should fetch the last row which is new. and don't it start from the first row here is the code please help me .,我认为您想从最后一行检索值。我建议的答案是为此。如果我的理解不正确,我深表歉意。
    猜你喜欢
    • 2019-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多