google-apps-script - 重命名演示文稿和脚本后执行谷歌应用脚本(谷歌幻灯片)的问题
问题描述
我对编程和使用谷歌应用脚本很陌生。我编写的脚本将文本框中的选定文本(谷歌幻灯片)拆分为不同的文本框(初始文本框的每一行都是一个单独的文本框)。代码只是对developers.google.com 示例的修改。
function SelectedTextGrabber() {
var selection = SlidesApp.getActivePresentation().getSelection();
var selectionType = selection.getSelectionType();
var currentPage;
switch (selectionType) {
case SlidesApp.SelectionType.NONE:
Logger.log('Nothing selected');
break;
...
case SlidesApp.SelectionType.TEXT:
var tableCellRange = selection.getTableCellRange();
if (tableCellRange != null) {
var tableCell = tableCellRange.getTableCells()[0];
Logger.log('Selected text is in a table at row ' +
tableCell.getRowIndex() + ', column ' +
tableCell.getColumnIndex());
}
var textRange = selection.getTextRange();
if (textRange.getStartIndex() == textRange.getEndIndex()) {
Logger.log('Text cursor position: ' + textRange.getStartIndex());
} else {
Logger.log('Selection is a text range from: ' + textRange.getStartIndex() + ' to: ' +
textRange.getEndIndex() + ' is selected');
var s1 = textRange.asString();
var s2 = '';
var s3 = [];
for (var i = 0; i < s1.length; i++){
if (s1[i] === '\n' || i === s1.length -1) {
s3.push(s2);
s2='';
} else {
s2 += s1[i];
}
}
// textbox parameteres
var h4 = 0;
var left = 10;
var top = 10;
var textsize = 12;
var standnum = 37;
var width = 2 * textsize + (textsize - textsize % 2) / 2 * standnum;
Logger.log(width);
var slide = SlidesApp.getActivePresentation().getSlides()[1];
for (var i = 0; i < s3.length; i++){
//анализ размера текстового блока
var s4 = s3[i].length;
if (s4 <= standnum) {
h4 = textsize * 2;
} else {
h4 = textsize * 2 + (s4 - s4 % standnum) / standnum * textsize;
}
var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, left, top, width, h4);
var textRange = shape.getText();
textRange.setText(s3[i]);
textRange.getTextStyle().setFontSize(textsize);
top += h4;
if (top > 370) {
top = 10;
left += width;
}
}
}
break;
case SlidesApp.SelectionType.TABLE_CELL:
var tableCells = selection.getTableCellRange().getTableCells();
var table = tableCells[0].getParentTable();
Logger.log('There are ' + tableCells.length + ' table cells selected.');
break;
case SlidesApp.SelectionType.PAGE:
var pages = selection.getPageRange().getPages();
Logger.log('There are ' + pages.length + ' pages selected.');
break;
default:
break;
}
}
它工作得很好,但是当我重命名脚本和演示文稿时,我得到了 TypeError:无法调用 null 的方法“getSelectionType”。(第 4 行,文件“代码”)。
等待 30 分钟后,此脚本再次开始工作而没有错误。我认为这可能会发生,因为在谷歌服务器中进行一些更改需要时间。但是当我修改要拆分的文本框中的初始文本时,脚本给了我相同的结果,因为我没有更改初始文本(结果是文本框中的分隔行,但用于初始文本)。你知道我应该怎么做才能解决它吗?
解决方案
推荐阅读
- python - 如何从熊猫列中的列表中提取元素并将它们附加到集合中
- r - 是否有一个 R 包来计算使用 clogit 或 bife 的条件(固定效应)逻辑模型的伪 R 平方度量?
- qt - 自定义或定义新的 Qml ChartView 主题
- javascript - 处理响应和传入道具的最佳实践
- javascript - 将 Hooks 与 Redux 一起使用——不好的做法?
- django - 为什么我的 slug 相关字段在 Django 中显示用户对象(1)而不是建议的字段名称?
- asp.net-core-webapi - 使用带有 Asp.net Core API 的身份服务器 4 使用有效访问令牌获取 401 Unauthorized
- ssl - SSL证书阻止前端和后端之间的通信?
- swift - SwiftUI HStack 垂直对齐不起作用?
- .htaccess - 同一域内的简单 .htaccess 重定向