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

时间:2016-07-02 02:04:57

标签: javascript google-apps-script google-sheets

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

我编写的代码采用了下拉值"已完成"当这个"完成"选中,它会发布当前日期:

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');
} 
}

我正在尝试编写另一个函数,当"完成"被选中,但取而代之的是从表单和会议成员列表#34;并将Ytd考勤值放在表格#34;会议已完成的时间戳右侧的两个空格处。"年初至今应与参加者的姓名相对应。另外,由于我打算在这两个工作表中添加更多列,我试图让它按列名搜索这些值。

我最接近的是这样的事情:

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(
} 
}

1 个答案:

答案 0 :(得分:2)

您没有指定哪个列具有与会者的名称,该列用于匹配两个工作表之间的数据。传统上,这种数据在第一列,所以我认为它是。然后脚本可以是这样的:

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);
  }
}

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