Экспорт листа Google и загрузка в Sharepoint - PullRequest
1 голос
/ 14 апреля 2020

Я использую Google Sheets для создания файлов для клиентов. Затем они экспортируются и отправляются. Я хотел бы, чтобы они были загружены на sharepoint, и мне было интересно, если бы кто-нибудь знал, есть ли способ сделать это.

Используемый в настоящее время скрипт выглядит так:

function CreatePDF() {
  var sourceSpreadsheet = SpreadsheetApp.getActive();   
  var ui = SpreadsheetApp.getUi();
  var sheetName = "Agreement";
  var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
  var sh = sourceSpreadsheet.getSheetByName("Input");
  var driveFile = DriveApp.getFileById("xxxxxxxxxxxxxx"); 
  var parentFolder = driveFile.getParents();
  var folderName =parentFolder.next().getId();
  var folder = DriveApp.getFolderById(folderName); 
  var numf = sourceSpreadsheet.getRangeByName("AgreementSheet").getValue();
  var anof = numf.split("/",2);

  var pdfRange = sh.getRange("I19");
  var pdfName = pdfRange.getValue();

  // export url
  var url = 'https://docs.google.com/spreadsheets/d/'+sourceSpreadsheet.getId()+'/export?exportFormat=pdf&format=pdf' // export as pdf / csv / xls / xlsx
  + '&size=A4'                           
  + '&portrait=true'                     
  + '&fitw=true' 
  + '&top_margin=0.00'              
  + '&bottom_margin=0.00'          
  + '&left_margin=0.00'             
  + '&right_margin=0.00'  
  + '&sheetnames=false&printtitle=false' 
  + '&pagenumbers=false&gridlines=false' 
  + '&fzr=false'                         
  + '&gid='+sourceSheet.getSheetId();    

  var token = ScriptApp.getOAuthToken();

  var response = UrlFetchApp.fetch(url, {
    headers: {
      'Authorization': 'Bearer ' +  token
    }
  });

  var theBlob = response.getBlob().setName(pdfName+'.pdf');

  var newFile = folder.createFile(theBlob);
  var url1 = newFile.getDownloadUrl();

  Logger.log(url1);
  var html = HtmlService.createHtmlOutput('<html><script>'
  +'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
  +'var a = document.createElement("a"); a.href="'+url1+'"; a.target="_blank";'
  +'if(document.createEvent){'
  +'  var event=document.createEvent("MouseEvents");'
  +'  if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'                          
  +'  event.initEvent("click",true,true); a.dispatchEvent(event);'
  +'}else{ a.click() }'
  +'close();'
  +'</script>'
  +'<body style="word-break:break-word;font-family:sans-serif;">Failed to open automatically. <a href="'+url+'" target="_blank" onclick="window.close()">Click here to proceed</a>.</body>'
  +'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
  +'</html>')
  .setWidth( 90 ).setHeight( 1 );
  SpreadsheetApp.getUi().showModalDialog( html, "Downloading ..." );
  history()
  clearContents()
  var pdfUrl = DriveApp.getFileById(newFile.getId()).setTrashed(true);
  Logger.log(pdfUrl);
  return true;
  sh.showSheet();
}

Раньше, когда я работал с Excel, вы могли загрузить файл, как показано ниже: https://ubt365.sharepoint.com/:f:/r/sites/group/folder/, а затем добавить имя файла, которое создает следующую строку: https://ubt365.sharepoint.com/:f:/r/sites/group/folder/file-name.pdf

Я пытался сделать аналогичный трюк с Сценарий приложения, как показано ниже:

var shp = 'https://ubt365.sharepoint.com/:f:/r/sites/group/folder/' + url1;

//then add this to the redirect script:
var html = HtmlService.createHtmlOutput('<html><script>'
  +'window.close = function(){window.setTimeout(function(){google.script.host.close()},9)};'
  +'var a = document.createElement("a"); a.href="'+shp+'"; a.target="_blank";'
  +'if(document.createEvent){'
  +'  var event=document.createEvent("MouseEvents");'
  +'  if(navigator.userAgent.toLowerCase().indexOf("firefox")>-1){window.document.body.append(a)}'                          
  +'  event.initEvent("click",true,true); a.dispatchEvent(event);'
  +'}else{ a.click() }'
  +'close();'
  +'</script>'
  +'<body style="word-break:break-word;font-family:sans-serif;">Failed to open automatically. <a href="'+url+'" target="_blank" onclick="window.close()">Click here to proceed</a>.</body>'
  +'<script>google.script.host.setHeight(40);google.script.host.setWidth(410)</script>'
  +'</html>')
  .setWidth( 90 ).setHeight( 1 );
  SpreadsheetApp.getUi().showModalDialog( html, "Downloading ..." );

Используя второй фрагмент кода в моем вопросе, я могу скачать PDF, открыв URL для загрузки (используя функцию .getDownloadUrl() для newFile), или могу откройте sharepoint с помощью var shp = 'https://ubt365.sharepoint.com/:f:/r/sites/group/folder/') - я не знаю, как это сделать, по сути, скачав файл и поместив его в Sharepoint

...