google-apps-script - 使用谷歌应用脚本从谷歌文档中获取页数
问题描述
我需要获取谷歌文档的页数并遇到以下代码
function getNumPages() {
var blob = DocumentApp.getActiveDocument().getAs("application/pdf");
var data = blob.getDataAsString();
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
Logger.log("pages = " + pages);
return pages;
}
但是,当运行时,我在第 4 行收到以下错误
TypeError: Cannot read property '1' of null
当我记录它输出的数据变量时
%PDF-1.4
%����
1 0 obj
<</Title (Reddit_Fin)
/Producer (Skia/PDF m92 Google Docs Renderer)>>
endobj
3 0 obj
<</ca 1
/BM /Normal>>
endobj
5 0 obj
<</Filter /FlateDecode
/Length 548>> stream
x��UQk�0~ϯ��%[�
cp�}��lka�����s��H��]Y H�>�>����! ����ϐ-8�~�>��j�B�����>z��w�>p�9�yx���<�&J�d�Q2��K~
���fm|{���4�>���/1��
这是一个 8 页的文件。
解决方案
例如,在您的情况下,如何计算 的数量Contents
?我认为当通过使用 Google Apps Script 检索为 blob 将 Google Document 转换为 PDF 数据时,可以使用此方法。当这反映到您的脚本中时,它变成如下。
修改后的脚本:
从:
var pages = parseInt(data.match(/ \/N (\d+) /)[1], 10);
至:
var pages = data.match(/\/Contents/g).length;
和
var pages = [...data.matchAll(/\/Contents/g)].length;
笔记:
- 如果无法使用上述修改,我认为像https://www.convertapi.com/这样的外部 API可能对直接实现您的目标有用。
参考:
推荐阅读
- regex - 这个指令是什么意思
? - node.js - 将 Async/Await 与 node-postgres 一起使用
- sql - 执行 SQL Server 存储过程时出现语法错误
- android - 如何修复“Play商店无法识别'values-ne/strings.xml'文件中的字符串。”
- python - 生成 HMAC SHA256 签名 Python
- c# - Azure IoT Adge BLE 模块 - 用于 linux 容器的 BLE 实现
- reactjs - 在 axios 中发送 GET/POST 请求以在 React/Express 应用程序中接收 blob
- matlab - MATLAB - 极点放置不会导致正确的特征值矩阵
- python - 如何沿着geojson折线找到POI,最好使用python?
- angularjs - 如何将字符串转换为从函数获得的 html 代码?