Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Apps脚本-.setValue在基于for循环匹配的单元格中_Javascript_Google Apps Script - Fatal编程技术网

Javascript Google Apps脚本-.setValue在基于for循环匹配的单元格中

Javascript Google Apps脚本-.setValue在基于for循环匹配的单元格中,javascript,google-apps-script,Javascript,Google Apps Script,我试图从一个数据区域中获取值,循环数据,匹配该数据中的一个值,然后根据匹配的值,更新上面几列的单元格 我能够找到匹配的值,但我很难理解如何在几列上更新单元格。下面是到目前为止我得到的代码减去.setValue部分 var trackingSS = 'Spreadsheet 1'; var decisionSS = 'Spreadsheet 2'; function grabRequestID() { var ss = SpreadsheetApp.openById(decissionSS)

我试图从一个数据区域中获取值,循环数据,匹配该数据中的一个值,然后根据匹配的值,更新上面几列的单元格

我能够找到匹配的值,但我很难理解如何在几列上更新单元格。下面是到目前为止我得到的代码减去.setValue部分

var trackingSS = 'Spreadsheet 1';
var decisionSS = 'Spreadsheet 2';

function grabRequestID() {
  var ss = SpreadsheetApp.openById(decissionSS);
  var range = ss.getActiveSheet().getRange(ss.getLastRow(), 2, 1, 1)
  var requestID = range.getValue(); 

  return requestID;
}

function managersDecision() {
  var ss = SpreadsheetApp.openById(trackingSS)
  var sheet = ss.getSheetByName('Requests');
  var data = sheet.getDataRange().getValues();
  var requestID = grabRequestID();

  for (var i=0; i < data.length; i++) {
    for (var j=0; j < data[i].length; j++) {
      if (data[i][j] == requestID) {
        Logger.log('found it');
      }    
     }  
    }
   }
var trackingSS='Spreadsheet 1';
var decisionSS=‘电子表格2’;
函数grabRequestID(){
var ss=电子表格应用程序openById(DecisionSS);
var range=ss.getActiveSheet().getRange(ss.getLastRow(),2,1,1)
var requestID=range.getValue();
返回请求ID;
}
函数管理器决策(){
var ss=电子表格应用程序.openById(trackingSS)
var sheet=ss.getSheetByName('Requests');
var data=sheet.getDataRange().getValues();
var requestID=grabRequestID();
对于(变量i=0;i
如您所见,有两个功能。managersDecision()读取电子表格1中的所有数据。然后,它调用grabRequestID(),并使用该值(来自电子表格2)作为匹配条件,同时循环来自电子表格1的数据。目前,它将定位并查找匹配项

我现在想做的是,基于匹配,检查同一行中的两列,根据成功找到匹配项,将单元格值更新为“已批准”或“已拒绝”

我对如何让它写入手机有点迷茫。我是否应该尝试识别其所在的行,然后设置值?也许抓取匹配所在的整行(放入数组),然后重写该行


如果需要任何帮助,我们将不胜感激。

要设置一个值,您只需计算您使用的数组从零开始,但在电子表格中,我们从一开始计算。您还需要确保您正在尝试在现有单元格中写入。因此,在写作之前,请添加必要的专栏。
我没有写“拒绝”部分,因为它要遍历电子表格的所有单元格,但我写了managersDecision函数的第二个版本,其中我只遍历了一列,在这里我处理了被拒绝的部分

代码如下:

var trackingSS = 'Spreadsheet1';
var decisionSS = 'Spreadsheet2';
function grabRequestID() {

  var ss = SpreadsheetApp.openById(decisionSS);
  var range = ss.getActiveSheet().getRange(ss.getLastRow(), 2, 1, 1)
  var requestID = range.getValue(); 
  Logger.log("requestID= "+requestID);
  return requestID;
}

function managersDecision() {
  var ss = SpreadsheetApp.openById(trackingSS)
  var sheet = ss.getSheetByName('Requests');
  var data = sheet.getDataRange().getValues();
  var requestID = grabRequestID();

  for (var i=0; i < data.length; i++) { // going through all the rows
    for (var j=0; j < data[i].length; j++) { // this is going through all the cell of a row
      if (data[i][j] == requestID) {
        Logger.log('found it');
        var row = Number(i)+1;
        var col = Number(j)+1+2;
        while(sheet.getMaxColumns()<col){
          sheet.insertColumnsAfter(sheet.getMaxColumns(),col-sheet.getMaxColumns());
        }
        sheet.getRange(row, col).setValue("approved");
      }    
    }  
  }
}


function managersDecision2() {
  var ss = SpreadsheetApp.openById(trackingSS)
  var sheet = ss.getSheetByName('Requests');
  var data = sheet.getRange("A:A").getValues()
  var requestID = grabRequestID();

  var col = 1+2;
  while(sheet.getMaxColumns()<col){
    sheet.insertColumnsAfter(sheet.getMaxColumns(),col-sheet.getMaxColumns());
  }

  for (var i=0; i < data.length; i++) { // going through all the rows
    var row = 1+i;
    if (data[i][0] == requestID) {
      Logger.log('found it');     
      sheet.getRange(row, col).setValue("approved");
    }
    else if(data[i][0] !=""){
      Logger.log(row)
      sheet.getRange(row, col).setValue("denied");
    }

  }
}
var trackingSS='Spreadsheet1';
var decisionSS=‘电子表格2’;
函数grabRequestID(){
var ss=电子表格应用程序openById(decisionSS);
var range=ss.getActiveSheet().getRange(ss.getLastRow(),2,1,1)
var requestID=range.getValue();
Logger.log(“requestID=“+requestID”);
返回请求ID;
}
函数管理器决策(){
var ss=电子表格应用程序.openById(trackingSS)
var sheet=ss.getSheetByName('Requests');
var data=sheet.getDataRange().getValues();
var requestID=grabRequestID();
对于(var i=0;iwhile(sheet.getMaxColumns()要设置一个值,您只需要计算您使用的数组从零开始,但在电子表格中,我们从一开始计算。您还需要确保您正在尝试在现有单元格中写入。因此,在写入之前,请添加必要的列。
我没有写“拒绝”部分,因为它要遍历电子表格的所有单元格,但我写了managersDecision函数的第二个版本,其中我只遍历了一列,在这里我处理了被拒绝的部分

代码如下:

var trackingSS = 'Spreadsheet1';
var decisionSS = 'Spreadsheet2';
function grabRequestID() {

  var ss = SpreadsheetApp.openById(decisionSS);
  var range = ss.getActiveSheet().getRange(ss.getLastRow(), 2, 1, 1)
  var requestID = range.getValue(); 
  Logger.log("requestID= "+requestID);
  return requestID;
}

function managersDecision() {
  var ss = SpreadsheetApp.openById(trackingSS)
  var sheet = ss.getSheetByName('Requests');
  var data = sheet.getDataRange().getValues();
  var requestID = grabRequestID();

  for (var i=0; i < data.length; i++) { // going through all the rows
    for (var j=0; j < data[i].length; j++) { // this is going through all the cell of a row
      if (data[i][j] == requestID) {
        Logger.log('found it');
        var row = Number(i)+1;
        var col = Number(j)+1+2;
        while(sheet.getMaxColumns()<col){
          sheet.insertColumnsAfter(sheet.getMaxColumns(),col-sheet.getMaxColumns());
        }
        sheet.getRange(row, col).setValue("approved");
      }    
    }  
  }
}


function managersDecision2() {
  var ss = SpreadsheetApp.openById(trackingSS)
  var sheet = ss.getSheetByName('Requests');
  var data = sheet.getRange("A:A").getValues()
  var requestID = grabRequestID();

  var col = 1+2;
  while(sheet.getMaxColumns()<col){
    sheet.insertColumnsAfter(sheet.getMaxColumns(),col-sheet.getMaxColumns());
  }

  for (var i=0; i < data.length; i++) { // going through all the rows
    var row = 1+i;
    if (data[i][0] == requestID) {
      Logger.log('found it');     
      sheet.getRange(row, col).setValue("approved");
    }
    else if(data[i][0] !=""){
      Logger.log(row)
      sheet.getRange(row, col).setValue("denied");
    }

  }
}
var trackingSS='Spreadsheet1';
var decisionSS=‘电子表格2’;
函数grabRequestID(){
var ss=电子表格应用程序openById(decisionSS);
var range=ss.getActiveSheet().getRange(ss.getLastRow(),2,1,1)
var requestID=range.getValue();
Logger.log(“requestID=“+requestID”);
返回请求ID;
}
函数管理器决策(){
var ss=电子表格应用程序.openById(trackingSS)
var sheet=ss.getSheetByName('Requests');
var data=sheet.getDataRange().getValues();
var requestID=grabRequestID();
对于(var i=0;iwhile(sheet.getMaxColumns())感谢您的回复和信息。它帮助我克服了困难。最终只使用了这一行。getRange(i+1,j+1,1,1)。setValue(“批准”);感谢您的回复和信息。它帮助我克服了困难。最终只使用了这一行。getRange(i+1,j+1,1)。setValue(“批准”);