gpt4 book ai didi

javascript - 在 Google Spreadsheets 中使用 onEdit 实时编辑单元格内容

转载 作者:行者123 更新时间:2023-11-30 18:05:13 24 4
gpt4 key购买 nike

让我的 onEdit 脚本工作是最困难的时期。我的工作有一个电话日志表,我们用它来跟踪电话(日期、时间、分配的技术人员等)。我们将另一个工作表设置为数据透视表报告,称为 Tech 的电话调用。该表应该自动计算每个技术人员每天的调用次数。它有效,但问题是任何时候额外的空白被添加到电话日志表的分配技术列中的单元格,技术电话调用表将其视为一个完整的其他人,所以看起来好像有 4 个不同的“鲍勃等。

我已经成功地编写了一个脚本来通过 trim Assigned Tech 列的每个单元格中的空白来清理它,我正在尝试将其转换为 onEdit 脚本以实时完成同样的事情。

function onEdit(e) 
{
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sh = ss.getActiveSheet();
var r = ss.getActiveRange();
}

function myOnEdit()
{
function replacer( str, p1, p2, offset, s ) {
return p1
}

var ss = SpreadsheetApp.getActiveSpreadsheet();
var cell = ss.getActiveCell().getA1Notation();
var tsheet = "Phone Log";
var sname = ss.getName();

if (sname = tsheet) //Are we in the Phone Log sheet?
{

var r = ss.getActiveRange();
var column = r.getColumn();

if (column == 4) //Are we editing a cell in the "Assigned Tech" column?
{

var value = cell.getValue();
if ( value == String )
{
value = value.replace( /^\s*(.*?)\s*$/gm , replacer );
cell.setValue( value) ;
}
}
}

}

所以基本上,我试图获取正在编辑的单元格值,即“Bob”,删除空格并将输入的值替换为编辑后的值“Bob”。在脚本编辑器中运行上述脚本时没有出现任何错误,但它就是不起作用。我确实安装了 onMyEdit() 作为 onEdit 触发器。

有什么想法吗?

最佳答案

我很惊讶这对你有用。由于 getA1Notation() 调用,cell 包含一个字符串,因此不支持 .getValue()。 setValue() 方法。

“事件”工作表和单元格的概念并不真正适用于 onEdit() 触发函数;它们在它们自己的执行实例中被调用,并且一个事件被传递给它们以提供上下文。参见 Understanding Events .

您还犯了一个简单但灾难性的错误 =。单个 = 是一个赋值操作,比较有两种风格,=====。 (第一个比较两个对象的内容,第二个也比较这些对象的类型。)当你有 if (sname = tsheet) 时,它不是比较工作表的名称,而是分配tsheet 的内容到sname,然后对sname 进行 bool 测试。 (这种类型的错误不会被解释器捕获,因为它是完全有效的……这不是您想要的。)

当你检查 if ( value == String ) 时,你的意思是检查值的 TYPE 是否是一个字符串?如果是这样,将像这样完成:if (typeof value === 'string')

更新脚本<​​/h3>
function myOnEdit(e) 
{
function replacer( str, p1, p2, offset, s ) {
return p1
}

var ss = e.source;
var cell = e.range;
var tsheet = "Phone Log";
var sname = ss.getName();

if (sname === tsheet) //Are we in the Phone Log sheet?
{

var column = cell.getColumn();

if (column == 4) //Are we editing a cell in the "Assigned Tech" column?
{

var value = cell.getValue();
if (typeof value === 'string')
{
value = value.replace( /^\s*(.*?)\s*$/gm , replacer );
cell.setValue( value );
}
}
}
}

关于javascript - 在 Google Spreadsheets 中使用 onEdit 实时编辑单元格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15978057/

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