Javascript 在GoogleSheets中按列名将单元格值从一个工作表提取到另一个工作表
我有一个模拟电子表格,其中包括 我已经编写了一个代码,该代码采用下拉值“Completed”,当选择此“Completed”时,它将发布当前日期: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
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]”是什么意思?为什么我从一开始。我知道你已经试着回答这个问题了,但你能详细说明一下吗?