使用 Google Apps 脚本从 Google 文档中删除空白的最后一页 space、选项卡
Removing empty last page space, tab from Google document using Google Apps Script
正在使用 Google Apps 脚本
从 Google 文档中删除空白的最后一页 space、选项卡
你好,我是 Script 新手
复制/粘贴后,我经常有包含几页带有 space 和制表符的文档
我正在尝试擦除输入的最后一个打印字符后面的所有内容,而不必 select 页数
我只需要打印第一页
你能告诉我吗?
tanaikech 脚本不适合我使用...太糟糕了
Tanaike's script 仅删除最后一段,并且在不检查该段落是否为空的情况下将其删除。
如果你想删除文档末尾的所有空段落,你可以这样做(注意,它会为每个空段落调用 API,请参阅我的更新版本):
function main() {
var doc = DocumentApp.getActiveDocument();
var id = doc.getId();
var text = doc.getBody().getText();
var pgfs = text.split('\n');
while(pgfs.pop().replace(/\s+/,"") == "") remove_last_pgf(id);
}
// original Tanaike's script goes here
function remove_last_pgf(docId) {
var c = Docs.Documents.get(docId, {
fields: "body.content"
}).body.content.pop();
Docs.Documents.batchUpdate(
{
requests: [
{
deleteContentRange: {
range: { startIndex: c.startIndex - 1, endIndex: c.endIndex - 1 }
}
}
]
},
docId
);
}
不要忘记在脚本编辑器的服务中添加Google Docs API:
更新
我进一步完善了脚本:
function main() {
var doc = DocumentApp.getActiveDocument();
var docId = doc.getId();
var empty_tail = doc.getBody().getText().search(/\s+$/) + 1;
if (empty_tail == 0) return; // prevent the error for empty docs
var content = Docs.Documents.get(docId,{fields: "body.content"}).body.content.pop();
var range = { startIndex: empty_tail, endIndex: content.endIndex-1 };
var req = { deleteContentRange: { range } };
Docs.Documents.batchUpdate( {requests: [req] }, docId );
}
现在它应该工作得更快,因为它不会为每个空行调用 API。它获取空字符 \s+
开始的位置,并通过调用 API.
将它们全部删除
我在没有什么可擦除的时候得到这个错误信息。
如何解决这个问题?
function main() {
var doc = DocumentApp.getActiveDocument();
var docId = doc.getId();
var empty_tail = doc.getBody().getText().search(/\s+$/) + 1;
var content = Docs.Documents.get(docId,{fields:
"body.content"}).body.content.pop();
if (empty_tail == 0) return;
var range = { startIndex: empty_tail, endIndex: content.endIndex-1 };
var req = { deleteContentRange: { range } };
Docs.Documents.batchUpdate( {requests: [req] }, docId );
}
正在使用 Google Apps 脚本
从 Google 文档中删除空白的最后一页 space、选项卡你好,我是 Script 新手
复制/粘贴后,我经常有包含几页带有 space 和制表符的文档
我正在尝试擦除输入的最后一个打印字符后面的所有内容,而不必 select 页数
我只需要打印第一页
你能告诉我吗?
tanaikech 脚本不适合我使用...太糟糕了
Tanaike's script 仅删除最后一段,并且在不检查该段落是否为空的情况下将其删除。
如果你想删除文档末尾的所有空段落,你可以这样做(注意,它会为每个空段落调用 API,请参阅我的更新版本):
function main() {
var doc = DocumentApp.getActiveDocument();
var id = doc.getId();
var text = doc.getBody().getText();
var pgfs = text.split('\n');
while(pgfs.pop().replace(/\s+/,"") == "") remove_last_pgf(id);
}
// original Tanaike's script goes here
function remove_last_pgf(docId) {
var c = Docs.Documents.get(docId, {
fields: "body.content"
}).body.content.pop();
Docs.Documents.batchUpdate(
{
requests: [
{
deleteContentRange: {
range: { startIndex: c.startIndex - 1, endIndex: c.endIndex - 1 }
}
}
]
},
docId
);
}
不要忘记在脚本编辑器的服务中添加Google Docs API:
更新
我进一步完善了脚本:
function main() {
var doc = DocumentApp.getActiveDocument();
var docId = doc.getId();
var empty_tail = doc.getBody().getText().search(/\s+$/) + 1;
if (empty_tail == 0) return; // prevent the error for empty docs
var content = Docs.Documents.get(docId,{fields: "body.content"}).body.content.pop();
var range = { startIndex: empty_tail, endIndex: content.endIndex-1 };
var req = { deleteContentRange: { range } };
Docs.Documents.batchUpdate( {requests: [req] }, docId );
}
现在它应该工作得更快,因为它不会为每个空行调用 API。它获取空字符 \s+
开始的位置,并通过调用 API.
我在没有什么可擦除的时候得到这个错误信息。 如何解决这个问题?
function main() {
var doc = DocumentApp.getActiveDocument();
var docId = doc.getId();
var empty_tail = doc.getBody().getText().search(/\s+$/) + 1;
var content = Docs.Documents.get(docId,{fields:
"body.content"}).body.content.pop();
if (empty_tail == 0) return;
var range = { startIndex: empty_tail, endIndex: content.endIndex-1 };
var req = { deleteContentRange: { range } };
Docs.Documents.batchUpdate( {requests: [req] }, docId );
}