我在脚本中有一个暂停/暂停,我已经工作了几个星期了。我是个新手,所以需要很多研究和帮助。现在脚本可以正常工作了,但是我想使用GoogleSheets专门与其他帐户共享这些表单。其想法是,一台计算机作为主机,只需将数据收集表整理好即可。另一台计算机将具有客户端,我们称之为客户端,通过C列中的下拉菜单单击位置或在C列中键入位置。只有在活动工作表上编辑C列时,OneEdit功能才会激活。(客户机使用的工作表)更改任何内容后,onEdit使用如果列C等于某些内容,则启动另一个函数,将信息插入被动工作表。(工作表收集数据)我面临的问题是,我不希望客户端计算机能够编辑被动工作表中的任何内容。我这样做的一种方法是使用Google Sheets来保护被动工作表不受其他用户的影响,但当我这样做时,每次他们编辑C列时,该功能都无法发挥作用。可能是因为脚本无法插入到受保护的工作表中?我想,通过在客户端计算机上编辑C列,它也会在主机上编辑C列,并且onEdit功能会在主机上激活。但显然,onEdit函数只有在手动编辑的情况下才会激活,通过脚本设置值并不能将其剪切。我错了吗?
我做的另一件事是隐藏被动工作表,但保持其可编辑性,这是可行的,但他们仍然可以单击“查看”并再次显示它。有没有办法防止这种情况?
我试图使这个脚本从客户端计算机牢不可破。
这里有几行代码来告诉你我的意思。
function onEdit(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var row = getCurrentRow()
var Location = getValue('ACTIVE!C' + row)
var firstName = getValue('ACTIVE!A' + row)
var lastName = getValue('ACTIVE!B' + row)
var passiveRow = findRows(1,firstName,2,lastName,5,"",'PASSIVE');
if(SpreadsheetApp.getActiveSheet().getName() !== "ACTIVE") return;
if(Location !== 'OFFICE' && Location !== "" && passiveRow !== "") {
timeIn();
places();
Logger.log(passiveRow)
}
else if(Location !== 'OFFICE' && Location !== "" && passiveRow == "") {
places();
Logger.log(passiveRow)
}
else if(Location === 'OFFICE') {
timeIn();
}
}
“findRows”函数是在被动脚本中查找符合条件的行的函数,并为我提供该行以放置TimeIn函数。
最后,我不在乎用什么方法,也许有一个更好的html" target="_blank">方法我没有想到。一种防止客户端编辑被动工作表的方法,但他们仍然可以编辑活动工作表,代码将正常运行。
我们在我的工作场所运行了一个类似的登录/注销系统。我们是这样做的:
创建不同的主机电子表格。(客户端gmail帐户不需要对主机电子表格进行编辑访问。)
function onEdited() {
SpreadsheetApp.openById("host spreadsheet id").appendRow(["this function
ran"]);
}
注意:如果您的on-edited函数需要客户端的任何用户权限才能运行(例如获取会话信息),它将不会启动,因此请使用一条简单的“I-ran”消息进行测试,并逐步达到您需要的位置。
我有一个用于Google Sheets的“onEdit”脚本,但只希望它在一张工作表上工作: 如何更改脚本,使其仅在工作表中的一张工作表上工作?
试图从当前工作簿“Create Report.xlsm”中复制工作表名称“Headings Explantions”,该工作簿打开到我要求打开的工作簿中,我得到了下标超出范围的错误
我写了一个google脚本来创建和粘贴从一个单元格到另一个单元格的值(相同的电子表格)。该守则包括以下两个步骤: > (不工作):将相邻单元格的新值粘贴到第二张工作表中下一个空行(第1列)的单元格中。 下面的代码是我迄今为止尝试过的代码,但第二页上没有显示该值。有人知道我在下面的尝试中的问题在哪里吗? 谢谢你
setCurrentSheetIsFirst(): self 实例 $config = ['path' => './tests']; $excel = new \Vtiful\Kernel\Excel($config); $excel->fileName('hide.xlsx', 'sheet1') // 初始化文件,同时初始化第一张工作表 sheet1 ->header(['sh
我有一个谷歌电子表格,其中有3张表格,包含来自不同国家的数据(,,),还有第4张表格()。所有图纸中的列都相同。 我已经知道我可以这样组合它们: 然而,我需要一种方法将任意数量的纸张组合在一起,而不需要修改公式。所以,如果添加了Country4,也应该追加。我怎么能那样做? 如果有帮助,我有一个工作表,其中有一列包含所有国家的名称(因此也包括国家工作表名称)。我有一个脚本,如果在工作表中添加了一个
我知道如何复制工作表,但这将导致多个工作表。我需要的是一个输出工作表,一个接一个地包含所有的工作表。 目前我正在做的是将每个工作表导出为< code>DataTable,然后逐个导入: 但这样,我就失去了单元格样式和文本格式 有没有办法用保留样式?