谷歌电子表格上更改写日志到另一个表
Google Spreadsheet On change write log to another sheet
请问谁能帮助一个问题在谷歌电子表格?
在"场地"表中更改了一个具体列的值后,我想写关于名称和时间的日志,当这个值被更改时。但我真的不知道,如果我正在使用电子表格"场地"或其他。我不是很进入类结构的谷歌API电子表格。有人能帮忙吗?
我需要:
- 当相应表("场馆")中相应列的值发生变化时,对事件运行eventandler
- 从表中获取列名称
- 获取实际时间
- 将名称和时间写入另一个名为"status_history"的表的最后一行(如追加)
我努力想写点东西:(但那真的是很糟糕的代码)
function onEdit(event)
{
var sheet = event.source.getActiveSheet();
var cell = sheet.getActiveCell();
var cellR = cell.getRow();
var cellC = cell.getColumn();
var cellValue = cell.getValue();
var cellCName = cell.getColumn()-1; //column with names
var name = sheet.getRange(cellR, cellCName).getValue();//get name
var active_spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
if(sheet.getName() == "Venues"){
if(cellC == 5 /* if correct collumn was changed */){
var output_sheet = active_spreadsheet.getSheetByName("status_history");
var lastRow = output_sheet.getLastRow();
var lastRange = output_sheet.getRange(lastRow, 1)
//HERE: write value: name
var lastRow = output_sheet.getLastRow();
var lastRange = output_sheet.getRange(lastRow, 2)
//HERE: write value: time
}
}
}
你就要成功了。只需要做一些调整。
使用onEdit函数,您需要保持速度,因为它们经常被调用。
- 尽可能依赖事件信息,避免调用Google Apps服务。
- 如果你必须使用一个服务,只有在你绝对需要的时候才这样做——例如,在调用
SpreadsheetApp.getActiveSpreadsheet()
之前,等到你通过了if
语句来判断你是否在一个你想要记录的单元格。 - API是丰富的,所以寻找函数,将让你减少系统调用的数量-看看
appendRow()
如何取代多个语句,例如。
下面是代码检查后的函数:
function onEdit(event) {
var sheet = event.range.getSheet();
if(sheet.getName() == "Venues"){
// correct sheet
var cell = event.range;
//var cellR = cell.getRow(); // not used at this time
var cellC = cell.getColumn();
var cellValue = event.value;
if (cellC == 5) {
// correct column
var name = cell.offset(0,-1).getValue(); // get name, 1 column to left
var time = new Date(); // timestamp
var active_spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var output_sheet = active_spreadsheet.getSheetByName("status_history");
output_sheet.appendRow([name,time]);
}
}
}
您可以通过使用列名来测试条件,使其更加灵活和可移植。看一下Adam的回答
相关文章:
- 当包含另一个asp文件时,是否也包含所有引用的样式和脚本页面
- 使用clickToggle并在单击另一个元素时关闭元素
- 使用javascript将动态表从一个html页面打印到另一个html页
- 如何在android中使用phonegap将文件从一个文件夹移动/复制到另一个文件夹
- 如果使用 lodash 将属性存在于另一个对象中,则向对象添加属性
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- 无法从jquery Mobile导航栏重定向到另一个页面
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 字符串在将其传递给另一个活动Android JavaScript时读取Null
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 导航到特定事件的另一个变量页面
- 正在传递JSONP标头's数据参数到另一个文件中的AJAX请求
- 如何在react js中将值从一个组件发送到另一个组件
- 按我自己的类克隆另一个元素的内容和顺序
- 在另一个函数中使用变量this
- 一个mouseleave事件将$(this)记录为元素;另一个将其作为委托对象进行日志记录
- 谷歌电子表格上更改写日志到另一个表
- 当尝试用另一个facebook用户登录时,它说控制台日志中有错误