每周,我都会收到来自客户的一组pdf文件。
他们会将pdf文件粘贴到特定的Google驱动器文件夹中。我需要pdf文件的总页数。我试图在Apps脚本中创建代码,这将有助于更新pdf文件名和特定Google表格中的页面总数。
但这不起作用。我正在寻找一个Apps脚本,该脚本可帮助检查特定的驱动器文件夹并更新pdf文件名和特定google工作表中的总页数。
我尝试下面的脚本。
function getNumberofPages() {
var myFolder = DriveApp.getFoldersByName("Test").next();
var files = myFolder.searchFiles('title contains ".PDF"');
while (files.hasNext()) {
var file = files.next();
Logger.log(file.getName());
Logger.log(file.length);
}
}
但是length选项对pdf文件不起作用。...
谢谢。
答案 0 :(得分:2)
不幸的是,目前还没有方法可以使用Google API从PDF文件中直接检索全部页面。那么这些解决方法呢?请根据您的情况选择它。
在此替代方法中,它检索PDF文件中内容流的数量。内容流显示为/Contents
的属性。
当这反映到您的脚本时,它如下所示。
function getNumberofPages() {
var myFolder = DriveApp.getFoldersByName("Test").next();
var files = myFolder.searchFiles('title contains ".PDF"');
while (files.hasNext()) {
var file = files.next();
var n = file.getBlob().getDataAsString().split("/Contents").length - 1;
Logger.log("fileName: %s, totalPages: %s", file.getName(), n)
}
}
在此替代方法中,API用于检索PDF文件的总页数。我使用了Split PDF API。从分割的文件数中检索总页数。使用此API时,请检查ConvertAPI并检索您的密钥。
function getNumberofPages() {
var myFolder = DriveApp.getFoldersByName("Test").next();
var files = myFolder.searchFiles('title contains ".PDF"');
while (files.hasNext()) {
var file = files.next();
var url = "https://v2.convertapi.com/convert/pdf/to/split?Secret=#####"; // Please set your secret key.
var options = {
method: "post",
payload: {File: DriveApp.getFileById(file.getId()).getBlob()},
}
var res = UrlFetchApp.fetch(url, options);
res = JSON.parse(res.getContentText());
Logger.log("fileName: %s, totalPages: %s", file.getName(), res.Files.length)
}
}
答案 1 :(得分:-1)
function menuItem() {
var folder =
DriveApp.getFoldersByName('Test').next();
var contents = folder.searchFiles('title contains ".PDF"');
var file;
var name;
var sheet = SpreadsheetApp.getActiveSheet();
var count;
sheet.clear();
sheet.appendRow(["Name", "Number of pages"]);
while(contents.hasNext()) {
file = contents.next();
name = file.getName();
count =
file.getBlob().getDataAsString().split("/Contents").length - 1;
data = [name, count]
sheet.appendRow(data);
}
};
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('PDF Page Calculator')
.addItem("PDF Page Calculator",
'menuItem')
.addToUi();
};