Javascript 在GoogleSheets中按列名将单元格值从一个工作表提取到另一个工作表

Javascript 在GoogleSheets中按列名将单元格值从一个工作表提取到另一个工作表,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我有一个模拟电子表格,其中包括 我已经编写了一个代码,该代码采用下拉值“Completed”,当选择此“Completed”时,它将发布当前日期: function onAnotherSwitch() { var ss = SpreadsheetApp.getActive() var sheet = ss.getSheetByName("Meeting Completed"); var activeCell = sheet.getActiveCell(); var col

我有一个模拟电子表格,其中包括

我已经编写了一个代码,该代码采用下拉值“Completed”,当选择此“Completed”时,它将发布当前日期:

function onAnotherSwitch() {
var ss = SpreadsheetApp.getActive()
var sheet      = ss.getSheetByName("Meeting Completed");
var activeCell = sheet.getActiveCell();
var col        = activeCell.getColumn();
var row        = activeCell.getRow();
if (col == 10 && activeCell.getValue() === "Completed") {
sheet.getRange(row, col+1).setValue(new    
Date()).setNumberFormat('MM/dd/yyyy');
} 
}
我正在尝试编写另一个函数,该函数在选择“已完成”时执行完全相同的操作,而是从工作表“会议成员列表”中获取年初至今的出席人数,并将年初至今的出席人数值放在工作表“会议已完成”中时间戳右侧两个空格处。年初至今的出席人数应与与会者的姓名相对应。此外,由于我计划在这两个表中添加更多的列,所以我尝试让它按列名搜索这些值

我最接近的是这种程度:

function onAnotherSwitch() {
var ss = SpreadsheetApp.getActive()
var sheet      = ss.getSheetByName("Meeting Completed");
var activeCell = sheet.getActiveCell();
var col        = activeCell.getColumn();
var row        = activeCell.getRow();
if (col == 10 && activeCell.getValue() === "Completed") {
sheet.getRange(row, col+1).setValue(
} 
}

您没有指定哪个列具有与会者的名称,该名称将用于匹配两张工作表之间的数据。传统上,这类数据位于第一列,因此我假设它位于第一列。那么脚本可以是这样的:

function attendance() {
  var ss = SpreadsheetApp.getActive()
  var sheet      = ss.getSheetByName("Meeting Completed");
  var activeCell = sheet.getActiveCell();
  var col        = activeCell.getColumn();
  var row        = activeCell.getRow();
  if (col == 10 && activeCell.getValue() === "Completed") {
    var name = sheet.getRange(row, 1).getValue();   // get the name from column A
    var listSheet = ss.getSheetByName("List of Meeting Members");
    var data = listSheet.getDataRange().getValues();  // all data from that sheet
    var colIndex = data[0].indexOf('Ytd Attendance'); // found column with attendance
    var attendance = 'N/A';   // in case there's no data for this person
    for (var i = 1; i < data.length; i++) {
      if (data[i][0] == name) {            // found the name
        attendance = data[i][colIndex];    // took attendance
        break;
      }
    }
    sheet.getRange(row, col+2).setValue(attendance);
  }
}
功能考勤(){
var ss=SpreadsheetApp.getActive()
var sheet=ss.getSheetByName(“会议完成”);
var activeCell=sheet.getActiveCell();
var col=activeCell.getColumn();
var row=activeCell.getRow();
if(col==10&&activeCell.getValue()==“已完成”){
var name=sheet.getRange(第1行).getValue();//从列A中获取名称
var listSheet=ss.getSheetByName(“会议成员名单”);
var data=listSheet.getDataRange().getValues();//该工作表中的所有数据
var colIndex=data[0]。indexOf('Ytd考勤');//找到了包含考勤的列
var attention='N/A';//如果没有此人的数据
对于(变量i=1;i

阅读本文时,请记住方括号中的索引以0开头(这在JavaScript中是标准的),而在工作表中,列/行号以1开头

我将此用于工作表,希望能够按照您的逻辑调整答案。“var指数”公式中的数据[0]是什么意思?第二个if语句中的“数据[i][0]”是什么意思?为什么我从一开始。我知道你已经试着回答这个问题了,但你能详细说明一下吗?