gpt4 book ai didi

google-apps-script - Google Apps 脚本 - 如何在多个容器中拥有一个脚本?

转载 作者:行者123 更新时间:2023-12-04 02:26:31 30 4
gpt4 key购买 nike

我有一个绑定(bind)到文档的容器绑定(bind)的 Google Apps 脚本,它运行良好,添加了菜单,运行良好。我的问题是,如何自动让容器绑定(bind)脚本在每个文档中自动运行?

另外,是否可以制作 chrome 扩展来修改谷歌文档,如果可以,我该怎么做?

这是我的代码:

var BLOCKS = "abcdefg";
var CLASSES = ["English", "History", "Science", "Writing", "Latin", "Math", "Study Skills"];
var FUNCTION_NAMES;
var global = this;
init();
for(var i = 0; i < BLOCKS.length; i++){
defineFunctions.call(global, BLOCKS[i]);
}

/**
* The onOpen function runs automatically when the Google Docs document is
* opened. Use it to add custom menus to Google Docs that allow the user to run
* custom scripts. For more information, please consult the following two
* resources.
*
* Extending Google Docs developer guide:
* https://developers.google.com/apps-script/guides/docs
*
* Document service reference documentation:
* https://developers.google.com/apps-script/reference/document/
*/
function onOpen() {
init();
// Add a menu with some items, some separators, and a sub-menu.
var menu = DocumentApp.getUi().createMenu('School Heading')
for(var i = 0; i < BLOCKS.length; i++){
block = BLOCKS[i];
menu = menu.addSubMenu(DocumentApp.getUi().createMenu(block + " Block")
.addItem('English', 'eng' + block)
.addItem('History', 'his' + block)
.addItem('Science', 'sci' + block)
.addItem('Writing', 'wri' + block)
.addItem('Latin', 'lat' + block)
.addItem('Math', 'mat' + block)
.addItem('Study Skills', 'stu' + block));
}
menu.addToUi();
}

function onInstall() {
onOpen();
}

function getName(){
var contact = ContactsApp.getContact(Session.getActiveUser().getEmail());
var name;
if(contact.getNickname()){
name = contact.getNickname();
} else {
name = contact.getGivenName();
}
name += " ";
name += contact.getFamilyName();
return name;
}

function getFunc(class,block){
return function(){
createHeading(class,block);
}
}

function defineFunctions(block){
Logger.log(FUNCTION_NAMES)
for(var i = 0; i < FUNCTION_NAMES.length; i++){
var funcName = FUNCTION_NAMES[i] + block;
eval.call(global, "function " + funcName + " () { createHeading('"+ CLASSES[i] + "', '" + block + "'); }");
}
}

function formatDate(date){
// September 26, 2013
date = new Date();
var string = "";
Logger.log(date.toLocaleDateString());
//return date;
}

function createHeading(class, block){
var header = DocumentApp.getActiveDocument().getHeader();
if(!header){
header = DocumentApp.getActiveDocument().addHeader();
}
var name = Session.getActiveUser();
header.insertParagraph(0, getName() + "\n{class}, {block} Block\n{date}".replace("{class}", class).replace("{block}", block).replace("{date}",(new Date()).toLocaleDateString())).setAlignment(DocumentApp.HorizontalAlignment.RIGHT);
}

function init(){
if(!Array.isArray(BLOCKS)){
BLOCKS = BLOCKS.toUpperCase().split("");
}
if(!Array.isArray(CLASSES)){
CLASSES = CLASSES.split("\n");
}
if(!Array.isArray(FUNCTION_NAMES) || FUNCTION_NAMES.length !== CLASSES.length){
FUNCTION_NAMES = [];
for(var i = 0; i < CLASSES.length; i++){
FUNCTION_NAMES.push(CLASSES[i].toLowerCase().substring(0,3));
}
}
}

最佳答案

除非您手动将脚本添加到每个文档,否则这是不可能的。对于以后创建的文档,您可以拥有一个模板文档(模板文档有脚本)并制作它的副本,而不是创建一个新文档。

关于google-apps-script - Google Apps 脚本 - 如何在多个容器中拥有一个脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18814030/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com