gpt4 book ai didi

javascript - Google Spreadsheet On 更改将日志写入另一张表

转载 作者:行者123 更新时间:2023-12-03 12:14:10 27 4
gpt4 key购买 nike

请问有人可以帮忙解决 Google 电子表格中的一个问题吗?

更改“ field ”表中一个具体列中的值后,我想在更改该值时写入有关名称和时间的日志。但我无法真正意识到,如果我正在使用电子表格“ field ”或其他一些。我不太了解 Google API for Spreadsheet 的类结构。那么有人可以帮忙吗?

我需要:

  • 当相应工作表中相应列(“地点”)中的值发生更改时,对事件运行事件处理程序
  • 从该工作表的列名称获取值
  • 获取实际时间
  • 将名称和时间写入另一个名为“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 服务。
  • 如果您必须使用某项服务,请仅在绝对需要时才使用 - 例如,等到您经过判断您是否位于要记录的单元格的 if 语句之后< em>在调用SpreadsheetApp.getActiveSpreadsheet()之前。
  • 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's answer here .

关于javascript - Google Spreadsheet On 更改将日志写入另一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24805727/

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