我创建了一个触发器,每次更新 Google 表格时都会向我发送一封电子邮件。
但是在消息中,我想发送写入更新的行的每个单元格中的数据。
在我正在实现的代码中,我只能获取更新的特定单元格的数据,而不是整行的数据。
我的代码如下:
function onEdit(e) {
var gSheet = SpreadsheetApp.getActiveSpreadsheet();
var cell = gSheet.getDataRange().toString();
var mEmail='[email protected]';
var mSubject='Nuevo error 404';
var mBody='Hoja modificada por: '+Session.getActiveUser()+
'\nDatos: '+gSheet.getActiveCell().getValue();
MailApp.sendEmail(mEmail, mSubject, mBody);
}
我正在寻找一种方法的可能性,但我找不到。我怎样才能得到该行的所有值?getActiveRow()
代码的当前状态
目前代码是这样的:
function onEdit(e) {
Logger.log("e");
var gSheet = SpreadsheetApp.getActiveSpreadsheet();
var cell = gSheet.getDataRange().toString();
var numFila = e.range.rowStart;
var fila = gSheet.getRange(numFila + ":" + numFila);
var valoresFila = fila.getValues();
var mEmail='[email protected]';
var mSubject='Nuevo error 404';
var mBody='Hoja modificada por: '+Session.getActiveUser()+"\nDatos: "+gSheet.getActiveCell().getValue()+" c1: "+valoresFila[1]+" c2: "+valoresFila[2];
MailApp.sendEmail(mEmail, mSubject, mBody);
}
当工作表更新时,我会收到一封电子邮件,但没有数据,如下所示:
Hoja modificada por: [email protected]
Datos:
就添加的代码而言,对修订版 2的响应。
问题是 和 上的
valoresFila[1]
索引valoresFila[2]
。假设您想要活动行中对应于 A 和 B 列的单元格的值,将它们替换为valoresFila[0][0]
yvaloresFila[0][1]
上面是因为它
getValues
返回一个数组数组,并且在 JavaScript 中数组的索引以 0 为底。第一个索引对应于行,第二个索引对应于列。关于从链接到电子表格的 Google 表单添加响应时功能的自动执行,而不是触发器,它
on Edit
使用触发器on Form Submit
。这是因为激活器
on Edit
和on Change
,无论是简单的还是可安装的,仅由打开电子表格的用户所做的更改激活,而不是由其他应用程序(例如 Google 表单)所做的更改、代码或更新激活。自动电子表格功能喜欢IMPORTRANGE
。重要笔记
on Form Submit
,一个用于电子表格绑定项目,一个用于表单绑定项目,每个都有一个具有特定属性的事件对象。请查阅Events中每个的属性。on Form Submit
并且time-driven
不能使用类似的方法,SpreadsheetApp.getActiveCell()
因为它们不模拟用户打开电子表格,因此没有活动的单元格、范围或选择。但是,对于电子表格链接的项目,它可以毫无问题地使用SpreadsheetApp.getActiveSpreadsheet()
。on Form Submit
,如果需要访问链接的电子表格,则可以使用getDestinationId()来获取链接的电子表格的 id。对修订 1的回应
从问题...
有几种方法可以连续获取所有值。
1:1
miArray[i]
getRange(fila, columna, numeroFilas,numeroColumnas)
例如,我们可以使用
其中 RowValues 将是工作表中 1 x 列数的数组。
如果您只想限制数据范围的行,我们可以使用 getLastColumn() ,在某些情况下可能会很慢,或者用于
gSheet.getDataRange().getValues()[0].length
获取数据范围的列数。在宏中,就在菜单中的“运行”下方,有一个活动的项目触发器图标。
这可以帮助您根据条件触发。我附上发送表单响应的示例图像,执行所选函数的脚本。