スプレッドシートのすべてのシートをGoogleドライブに1つのPDFとして保存しようとしています(最終的にはメールをもらいたい)。私はシートの1つ以上を保存することに問題があります。私はそれをやり遂げる複数の方法を試みました。以下のコードは私がこれまでに見つけた最良の方法です。再度問題は、最初のページをPDFとして保存するだけなので、削除冗長シートを回避する方法を理解できません。私が見たすべての投稿は1ページを保存したいだけで、24ページ以上を1つのPDFとして保存する必要があります。あなたの助けを前もってありがとう!Google App Script - Googleドライブに保存されたPDFにスプレッドシートを保存する
function PDF() {
var sheetName = SpreadsheetApp.getActiveSpreadsheet();
var folderID = "*** Google Drive ID***"; // Folder id to save in a Drive folder.
var ss = SpreadsheetApp.openByUrl(
'https://docs.google.com/spreadsheets/d/***Spreadsheet ID***');
var pdfName = "MAR - " + ss.getRange("A1:A1").getValue(); //Need to set the values to another sheet
var sourceSpreadsheet = SpreadsheetApp.getActive();
var sourceSheet = sourceSpreadsheet.getSheetByName(sheetName);
var folder = DriveApp.getFolderById(folderID);
//Copy whole spreadsheet
var destSpreadsheet = SpreadsheetApp.open(DriveApp.getFileById(sourceSpreadsheet.getId()).makeCopy("tmp_convert_to_pdf", folder))
//delete redundant sheets
var sheets = destSpreadsheet.getSheets();
for (i = 0; i < sheets.length; i++) {
if (sheets[i].getSheetName() != sheetName){
destSpreadsheet.deleteSheet(sheets[i]);
}
}
var destSheet = destSpreadsheet.getSheets()[0];
//repace cell values with text (to avoid broken references)
var sourceRange = sourceSheet.getRange(1,1,sourceSheet.getMaxRows(),sourceSheet.getMaxColumns());
var sourcevalues = sourceRange.getValues();
var destRange = destSheet.getRange(1, 1, destSheet.getMaxRows(), destSheet.getMaxColumns());
destRange.setValues(sourcevalues);
//save to pdf
var theBlob = destSpreadsheet.getBlob().getAs('application/pdf').setName(pdfName);
var newFile = folder.createFile(theBlob);
//Delete the temporary sheet
DriveApp.getFileById(destSpreadsheet.getId()).setTrashed(true);
}
? – Culper711
私の貧しい答えには申し訳ありません。私は自分の答えを更新し、あなたのスクリプトを「追加」したスクリプトを追加しました。これをチェックしてください。 – Tanaike
私はそれを試みて、私は同じエラーが発生し続ける、あなたは文書の最後のシートを削除することはできません。 (行19、ファイル "PDF Stack") – Culper711