我为Google文档创建了一个脚本,添加了一个名为“Utilities”的菜单项 - > “插入日期”(显然)将当前日期插入光标位置。我想将此脚本重用于其他文档,并最终将其提供给组织中的其他人,因此我将其作为库导入到另一个文档中。但是,当我尝试运行它时,库中的一个函数引用另一个函数,因此我得到一个错误,即.insertAtCursor函数不存在。
我是否需要在同一个函数中创建库中的所有内容?如果没有,是否有办法使用该调用,因此它假定它在库中?我怀疑这是我对Google Apps脚本范围的误解,但我不确定。
这是图书馆:
function onOpen() {
// Add a menu with some items, some separators, and a sub-menu.
DocumentApp.getUi().createMenu('Utilities')
.addItem('Insert Date (dd MMMM yyyy)', 'insertAtCursor')
.addToUi();
}
/**
* Inserts the sentence "Hey there!" at the current cursor location in boldface.
*/
function insertAtCursor() {
var cursor = DocumentApp.getActiveDocument().getCursor();
if (cursor) {
// Attempt to insert text at the cursor position. If insertion returns null,
// then the cursor's containing element doesn't allow text insertions.
// Date format defined at https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
// Make sure if you change the date format you update the menu items in the onOpen() fuction above
var date = Utilities.formatDate(new Date(), "GMT", "dd MMMM yyyy"); // "yyyy-MM-dd'T'HH:mm:ss'Z'"
var element = cursor.insertText(date);
if (element) {
element.setBold(false);
} else {
DocumentApp.getUi().alert('Cannot insert text at this cursor location.');
}
} else {
DocumentApp.getUi().alert('Cannot find a cursor in the document.');
}
}
以下是我在其他文档中使用它的方法:
function onOpen() {
InsertDate.onOpen()
}
如果我从另一个有效的文档调用InsertDate.insertAtCursor,但没有意义,因为我只想从菜单项调用该函数。我不知道如何将这个库修改为在另一个文档中“正常工作”。
答案 0 :(得分:0)
在使用该库的脚本中,您需要创建一个菜单并创建一个只调用该库的函数,因为在使用该库的doc上下文中调用了insertAtCursor函数:
function onOpen() {
// Add a menu with some items, some separators, and a sub-menu.
DocumentApp.getUi().createMenu('Utilities')
.addItem('Insert Date (dd MMMM yyyy)', 'insertAtCursor')
.addToUi();
}
function insertAtCursor() {
InsertAtCursor.insertAtCursor()
}
以下是一个更清洁的工作,它的工作原理并不是显而易见的:
function onOpen() {
InsertAtCursor.onOpen()
}
function insertAtCursor() {
InsertAtCursor.insertAtCursor()
}