首页 > 解决方案 > 使用谷歌应用脚​​本从谷歌文档中获取页数

问题描述

我需要获取谷歌文档的页数并遇到以下代码

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�&gt;�&gt;����!  ����ϐ-8�~�&gt;��j�B�����&gt;z��w�&gt;p�9�yx���&lt;�&amp;J�d�Q2��K~
���fm|{���4�&gt;���/1��

这是一个 8 页的文件。

标签: google-apps-scriptgoogle-docs

解决方案


例如,在您的情况下,如何计算 的数量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可能对直接实现您的目标有用。

参考:


推荐阅读