Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何调整脚本中的自定义大小页边距和纸张大小以将google电子表格保存为PDF格式?_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script 如何调整脚本中的自定义大小页边距和纸张大小以将google电子表格保存为PDF格式?

Google apps script 如何调整脚本中的自定义大小页边距和纸张大小以将google电子表格保存为PDF格式?,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我有一个脚本,可以将电子表格保存为pdf格式,但我无法编辑所需的页边距和纸张大小 function Testando() { var spreadsheet = SpreadsheetApp.getActive(); SpreadsheetApp.flush(); //make pdf var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/' + 'XXXXXXXXXXX

我有一个脚本,可以将电子表格保存为pdf格式,但我无法编辑所需的页边距和纸张大小


function Testando() {
  var spreadsheet = SpreadsheetApp.getActive();

SpreadsheetApp.flush();
      //make pdf
      var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
      + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'  //the file ID
      + '/export?exportFormat=pdf&format=pdf'
      + '&size=LETTER'
      + '&portrait=true'
      + '&fitw=true'       
      + '&top_margin=0.50'              
      + '&bottom_margin=0.50'          
      + '&left_margin=0.50'             
      + '&right_margin=0.50'           
      + '&sheetnames=false&printtitle=false'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'      
      + '&gid='
      + 'XXXXXXXXXXXXXXXXXXXXXX';       //the sheet's Id

      var token = ScriptApp.getOAuthToken();

      var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' +  token } });
      var fileid = DriveApp.createFile(docurl.getBlob()).setName('Teste.pdf').getId();

      var pdf = docurl.getBlob().setName('Teste.pdf');
    //  var pdf = docurl.getBlob().getAs('application/pdf').setName('testss.pdf'); 
     var filetodel = DriveApp.getFileById(fileid);
     DriveApp.getRootFolder().createFolder("Teste");  //comment if folder exists
     // if folder exists use next 
  if (DriveApp.getFoldersByName("Teste").hasNext()){
    var folder = DriveApp.getFoldersByName("Teste").next();
    filetodel.makeCopy(folder);
   }
   DriveApp.removeFile(filetodel);
}

我需要的PDF有自定义的纸张大小→ 高度:38厘米,宽度:40厘米

页面方向→ 景观

鳞片→ 配合宽度

边距→ 自定义数字:0左、0右、0开始和0结束


有人能帮我吗?

以下是一些如何选择正确页边距和纸张大小的示例

 //FORMATS WITH NO ADDITIONAL OPTIONS
  //format=xlsx       //excel
  //format=ods        //Open Document Spreadsheet
  //format=zip        //html zipped          

  //CSV,TSV OPTIONS***********
  //format=csv        // comma seperated values
  //             tsv        // tab seperated values
  //gid=sheetId             // the sheetID you want to export, The first sheet will be 0. others will have a uniqe ID

  // PDF OPTIONS****************
  //format=pdf     
  //size=0,1,2..10             paper size. 0=letter, 1=tabloid, 2=Legal, 3=statement, 4=executive, 5=folio, 6=A3, 7=A4, 8=A5, 9=B4, 10=B5  
  //fzr=true/false             repeat row headers
  //portrait=true/false        false =  landscape
  //fitw=true/false            fit window or actual size
  //gridlines=true/false
  //printtitle=true/false
  //pagenum=CENTER/UNDEFINED      CENTER = show page numbers / UNDEFINED = do not show
  //attachment = true/false      dunno? Leave this as true
  //gid=sheetId                 Sheet Id if you want a specific sheet. The first sheet will be 0. others will have a uniqe ID. 
                               // Leave this off for all sheets. 
  // EXPORT RANGE OPTIONS FOR PDF
  //need all the below to export a range
  //gid=sheetId                must be included. The first sheet will be 0. others will have a uniqe ID
  //ir=false                   seems to be always false
  //ic=false                   same as ir
  //r1=Start Row number - 1        row 1 would be 0 , row 15 wold be 14
  //c1=Start Column number - 1     column 1 would be 0, column 8 would be 7   
  //r2=End Row number
  //c2=End Column number 
也就是说,您的var应该是:

 var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/'
      + 'XXXXXXXXXXXXXXXXXXXXXXXXXXXX'  //the file ID
      + '/export?format=pdf'
      + '&size=0'
      + '&portrait=false'
      + '&fitw=true'       
      + '&top_margin=0'              
      + '&bottom_margin=0'          
      + '&left_margin=0'             
      + '&right_margin=0'           
      + '&sheetnames=false&printtitle=false'
      + '&pagenum=false'
      + '&gridlines=false'
      + '&fzr=FALSE'      
      + '&gid='
      + 'XXXXXXXXXXXXXXXXXXXXXX';  

现在的PDF大小我不认为可以更改为特定的大小,因为已经有预定义的大小。我进行了调查,但没有发现任何帮助,我希望这对您有所帮助。

这是对您请求的回应:

顺便问一下,您能否帮助我编辑脚本,使PDF格式保存的文件名等于电子表格“工作”页面“B5”单元格中的值

您可以使用此行从工作表中获取文件名

  // Get filename from sheet "Work", cell "B5"
  var fileName = spreadsheet.getSheetByName("WORK").getRange("B5").getValue();
然后使用设置新文件的名称

.setName(fileName); 
还有几行代码可以优化。我添加了一些评论来解释。希望这有助于:

function Testando() {
  var spreadsheet = SpreadsheetApp.getActive();
  SpreadsheetApp.flush();

  //make pdf
  var theurl = 'https://docs.google.com/a/mydomain.org/spreadsheets/d/' + // Best to place the line break after '+'
    'XXXXXXXXXXXXXXXXXXXXXXXXXXXX' +  //the file ID
      '/export?exportFormat=pdf&format=pdf' +
        '&size=LETTER' +
          '&portrait=true' +
            '&fitw=true' + 
              '&top_margin=0.50' +            
                '&bottom_margin=0.50' +         
                  '&left_margin=0.50' +        
                    '&right_margin=0.50' +     
                      '&sheetnames=false&printtitle=false' +
                        '&pagenum=false' +
                          '&gridlines=false' +
                            '&fzr=FALSE' +
                              '&gid=' +
                                'XXXXXXXXXXXXXXXXXXXXXX'; //the sheet's Id

  var token = ScriptApp.getOAuthToken();
  var docurl = UrlFetchApp.fetch(theurl, { headers: { 'Authorization': 'Bearer ' +  token } });
  var pdfBlob = docurl.getBlob();

  // Get filename from sheet "Work", cell "B5"
  var fileName = spreadsheet.getSheetByName("WORK").getRange("B5").getValue();

  // Create file from blob and name it
  // The newFile is placed in the root folder by default
  var newFile = DriveApp.createFile(pdfBlob).setName(fileName);  

  // if folder exists use next 
  if (DriveApp.getFoldersByName("Teste").hasNext()){
    var folder = DriveApp.getFoldersByName("Teste").next();

  // if folder does not exist
  } else {
    var folder = DriveApp.createFolder("Teste");// new folder created in the root folder by default
  }

  folder.addFile(newFile); // add new file to folder
  DriveApp.removeFile(newFile); // remove file from root folder
}

我明白,无论如何,非常感谢你抽出时间来帮助我@Mario-R。顺便问一下,您能否帮助我编辑脚本,使PDF格式保存的文件名等于电子表格“工作”页面“B5”单元格中的值?