如何基于源电子表格中的值获取和设置列号

时间:2019-04-15 19:08:46

标签: google-apps-script google-sheets

尝试基于源电子表格上特定单元格(G11)中的数据验证选择(ID#)将范围(L2:L9)复制到另一个电子表格。

目标电子表格上第5行的ID#均按字母数字顺序排列,因此我所需要做的就是获取与数据验证字段中所做选择相对应的列号。

在我不得不将ID#转换为字母数字值之前,我只是拥有数字值并且脚本可以正常工作。现在,我无法转换脚本以进行此修改。

function Submit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); // ss = source spreadsheet
  var source_sheet = ss.getActiveSheet(); 
  if (source_sheet.getName() == "Pre-Season CC") {
  var SRange = source_sheet.getRange('L2:L9');
  var A1Range = SRange.getA1Notation();
  var SData = SRange.getValues();
  var target = SpreadsheetApp.openById('1MpKdxFyBrVQT3EumePQvtCZpgzcDW5xlYe4B1DKZCA8');
  var target_sheet = target.getSheetByName('Pre-Season');
  var idNumber = source_sheet.getRange('Pre-Season CC!G11').getValue();
  for (var i = 0; i < idNumber.length; i++) {
    for (var j = 0; j < idNumber.length;j++){
    if (target_sheet[4][j] == idNumber){
      Logger.log((j+1))
      return j+1;
  target_sheet.getRange('B6:B13').offset(0,valueA1 = ss.getRange('Pre-Season!G11').getValue(idNumber)+1).setValues(SData);
      }
    }
  }
} 

这时,我需要根据ID#将数据从源电子表格复制到目标电子表格的指定列中。请帮忙!

1 个答案:

答案 0 :(得分:0)

尝试下面的代码。

function Submit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet(); // ss = source spreadsheet
  var source_sheet = ss.getActiveSheet();
  if (source_sheet.getName() == 'Pre-Season CC') {
    // source sheet items
    var SData = source_sheet.getRange('L2:L9').getValues();
    var idNumber = source_sheet.getRange('Pre-Season CC!G11').getValue();

    // target sheet items
    var targetSS = SpreadsheetApp.openById('1MpKdxFyBrVQT3EumePQvtCZpgzcDW5xlYe4B1DKZCA8');
    var target_sheet = targetSS.getSheetByName('Pre-Season');
    // 5 = row where IDs are
    var TData = target_sheet.getRange(5, 1, 1, target_sheet.getLastColumn()).getValues()[0];

    // column index of #ID in target sheet
    var colIndex = TData.indexOf(idNumber) + 1;

    // write data in that column, rows from 6 to 13
    target_sheet.getRange(6, colIndex, SData.length, 1).setValues(SData);
  }
}