我有一个像这样的搜索工具:
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;
}
或者是否可以从我想要输入数据的位置识别行?帮助不大。感谢
答案 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]]);
};