【发布时间】:2018-02-01 15:04:14
【问题描述】:
我知道一些基本的 javascript/app-script 并且我有以下代码
function onTimesheetOpen() {
var source = {
ssId : '1Mqbh09mj_UoRZiQkzw1gOVpHFiYk-8qZvpnDbzCYOFY',
shName : 'prompt',
a1Notation : "A1:A100",
};
var target = {
ssId : SpreadsheetApp.getActiveSpreadsheet().getId(),
shName : 'Setups',
a1Notation : "A1:A100",
};
AsExt.UTLCopyCell(source, target);
}
这是一个共享给一组员工的 READONLY 时间表模板,用于从员工表(源)复制员工列表并填充到我的目标(模板表)中。 onTimesheetOpen() 触发器,因为我设置了触发器“来自电子表格”、“打开时”事件。 每次打开模板时,它都会从主员工表中复制更新的员工。
工作人员的工作流程是将模板时间表文件“复制”到他们的驱动器(我的驱动器),我注意到每次制作副本时触发器都会被删除。它与传统的编程语言完全不同,我确实希望从大师那里得到一些帮助:) 我不能指望每个工人在“制作副本”后打开脚本编辑器,因为他们没有受过 IT 培训,他们的工作是获取时间表,其中包含最新员工列表(主文件)。
我也尝试了可安装的触发器 https://developers.google.com/apps-script/guides/triggers/installable 这也不太合适。
为了在他们复制的文件中创建触发器,他们必须运行以下代码一次(这很混乱,因为他们没有接受过 IT 培训)
function createSpreadsheetOpenTrigger() {
var ss = SpreadsheetApp.getActive();
ScriptApp.newTrigger('onTimesheetOpen')
.forSpreadsheet(ss)
.onOpen()
.create();
}
将只读模板分享给员工的最佳方式是什么,它将直接从主员工表中获取最新的员工列表,而无需让他们接触代码?
百万感谢!
【问题讨论】:
-
一旦他们制作了副本,他们将不得不授权代码。因为代码是在证书下运行的,所以您可以尝试使用custom menus 来简化此过程。此外,您可能想查看谷歌表格的 importRange() 函数。
-
感谢您的回复,但据我所知,自定义菜单在移动版本中不起作用。 ImportRange 请求“允许访问”,这也只能在桌面版工作表下工作:( 工作人员主要使用智能手机
标签: google-apps-script google-sheets