我正在寻找一种方法来为我的所有Google表格实施自定义菜单选项,以创建该电子表格活动工作表的PDF。我使用Autocrat创建了许多我希望转换为PDF的Google表格。但是,我不想以PDF格式下载"每次,然后重新上传到我的驱动器。
我找到了一种使用Google Script在sample上创建PDF的方法,该方法与Google文档有关,而不是表格。所以我改为适合Sheets。我还在顶部添加了一个自定义菜单选项。结果是以下代码。
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('PDF')
.addItem('Save PDF', 'convertPDF')
.addToUi();
}
function convertPDF() {
doc = SpreadsheetApp.getActiveSpreadsheet();
var docId = doc.getId();
var docFolder = DriveApp.getFileById(docId).getParents().next().getId();
var ui = SpreadsheetApp.getUi();
var result = ui.alert(
'Save As PDF?',
'Save current document (Name:'+doc.getName()+'.pdf) as PDF',
ui.ButtonSet.YES_NO);
if (result == ui.Button.YES) {
docblob = SpreadsheetApp.getActiveSpreadsheet().getAs('application/pdf');
/* Add the PDF extension */
docblob.setName(doc.getName() + ".pdf");
var file = DriveApp.createFile(docblob);
var fileId = file.getId();
moveFileId(fileId, docFolder);
ui.alert('Your PDF file is available at ' + file.getUrl());
} else {
ui.alert('Request has been cancelled.');
}
}
function moveFileId(fileId, toFolderId) {
var file = DriveApp.getFileById(fileId);
var source_folder = DriveApp.getFileById(fileId).getParents().next();
var folder = DriveApp.getFolderById(toFolderId)
folder.addFile(file);
source_folder.removeFile(file);
}

效果很好。它会创建电子表格的PDF并将其保存到包含原始电子表格的文件夹中。
但是,该代码特定于一张Google表格。我想知道是否有办法将这个应用到我打开的所有表格中。我找到了this page,但它已经很老了。它改变了吗?我是否需要在我想要的每个电子表格上安装它?当然,有一个更简单的方法,对吧?
我确定它很清楚,但我正在谈论通过网络界面使用Google云端硬盘。