Я использую 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