如何更新同一行中的行返回而不是最后一行google app脚本

时间:2015-04-03 14:08:13

标签: google-apps-script

我有一个像这样的搜索工具:

https://sites.google.com/site/appsscriptexperiments/home/a-simple-search-tool-ui 

但是将它放在面板中,添加一个编辑按钮以启用txtbox,并使用更新按钮来保存更改。但是,我将如何更新我搜索过的同一行中的现有数据?可能吗?是的更新,但它返回到最后一行。不在同一行。

function updatebutton(e){ 
  var ss = SpreadsheetApp.openById('exampleID').getActiveSheet();

  var sheet = SpreadsheetApp.getActiveSpreadsheet();

  var lastRow = ss.getLastRow();

  var row= ss.getDataRange().getRowIndex();

  var app = UiApp.getActiveApplication();

  var timestamp = e.timestamp = new Date() +  
  Session.getActiveUser().getUserLoginId();

  var txt0 = e.parameter.txt0;

  var txt1 = e.parameter.txt1;

  var txt2 = e.parameter.txt2;

  var txt3 = e.parameter.txt3;

  var data = ss.getRange(lastRow+1, 1, 1,4).setValues([[timestamp,txt1,txt2,txt3]]);

  return app;

}

或者是否可以从我想要输入数据的位置识别行?帮助不大。感谢

1 个答案:

答案 0 :(得分:0)

您似乎正在使用搜索电子表格的代码,并在单元格中查找值。然后,您想要更新该行数据。如果正在使用for循环,那么for循环的计数可以与该行匹配。如果要获取数据数组,然后查找数组中值的索引,那么索引号可以与行号匹配。

您可以获取当前活动的行号。但是,您需要在程序运行之前单击要更新的行。

var theActiveSheet = SpreadsheetApp.getActiveSheet().getName();
//Logger.log('theActiveSheet: ' + theActiveSheet);

if (theActiveSheet === 'your sheet name') {
  //Ask to Overwrite only if this is the correct sheet
  var updateThisRow = Browser.msgBox('UPDATE CURRENT ROW?', 'Overwrite current rows data', Browser.Buttons.YES_NO);
};

if (updateThisRow === 'yes') {    
  var currentRow = ss.getActiveCell().getRow();
  var data = ss.getRange(currentRow, 1, 1,4).setValues([[timestamp,txt1,txt2,txt3]]);
};