Can no longer produce PDF from Google Sheets spreadsheet for some of the users

后端 未结 2 1571
野性不改
野性不改 2020-11-27 08:46

For almost a year we have been using the below code to export a Google Sheets sheet (held in theSheetName) to a PDF named as specified in InboundID

相关标签:
2条回答
  • 2020-11-27 09:08

    I was having this exact problem. After some debugging I saw that my URL was being created incorrectly.

    My code was nearly identical to yours. Where I found the culprit was the following line:

    var url_base = theSpreadSheet.getUrl().replace(/edit$/,'');
    

    This was not actually clearing out the 'edit' to the end of the line like it had for years. I cannot say why this is, but the proof was in the logs. So, instead I crafted the url by hand:

    var   url = 'https://docs.google.com/spreadsheets/d/'+SpreadsheetApp.getActiveSpreadsheet().getId()+'/';
    

    This seemed to solve the problem. This is not a perfect futureproof resolution, because if Google changes how the URLs are crafted, this will fail. But it works for now.

    I hope this helps. You can send the url your code is creating to logs and check them to see if you have the same issue I did.

    0 讨论(0)
  • 2020-11-27 09:19

    To expand on Jesse's accepted answer - the culprit is definitely in this line:

    var url_base = theSpreadSheet.getUrl().replace(/edit$/,'');
    

    The reason why the replace(/edit$/,'') call no longer clears out edit like before is because the URL returned by theSpreadSheet.getUrl() used to end with edit, but now returns a URL with additional parameters on the end - ouid=1111111111111111111111&urlBuilderDomain=yourdomain.com.

    While rebuilding the URL entirely should also work, you can also patch the script with some small changes to the regular expression. Instead of looking for edit$ (meaning edit as the final characters in the string), you can look for edit + any additional characters like so:

    var url_base = theSpreadSheet.getUrl().replace(/edit.*$/,'');
    
    0 讨论(0)
提交回复
热议问题