Javascript 为google sheet项目的java脚本代码的变量中的当前列编制索引
我刚刚开始学习javascript,我正在尝试这样做:Javascript 为google sheet项目的java脚本代码的变量中的当前列编制索引,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我刚刚开始学习javascript,我正在尝试这样做: function votazioni() { var spreadsheet = SpreadsheetApp.getActive(); var activeSheet= spreadsheet.getActiveSheet(); var baseDati= spreadsheet.getSheetByName("Foglio2"); var cellRange = activeSheet.getActi
function votazioni() {
var spreadsheet = SpreadsheetApp.getActive();
var activeSheet= spreadsheet.getActiveSheet();
var baseDati= spreadsheet.getSheetByName("Foglio2");
var cellRange = activeSheet.getActiveCell();
var imput= activeSheet.getActiveCell().getValue();
var indiceImput= cellRange.getColumn();
var copiaDati=baseDati.getActiveRange(1,indiceImput).getValue();
for (var i=1; i<1204; i++){
if (imput == copiaDati) {
for( var j=2; j<7; j++){
var copiaValore=baseDati.getRange (j,indiceImput).getValue();
activeSheet.getRange(j,indiceImput).setValue(copiaValore);
}
i=1204;
}
}
}
我有两张不同的表,表1有一些数据,而表2是空的。
Sheet1在A列中有数字,在其他列中有一些内容
当我在Sheet2的a列上输入一个整数时,我试图创建一个运行的脚本(该整数在该表中必须是唯一的,并且出现在Sheet1的a列上),如果它等于Sheet1的a列的数目,脚本必须将Sheet1的对应行复制到Sheet2
function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
if (sheet.getSheetName() != "Sheet2" || range.getColumn() != 1 || range.getRow() == 1) return;
const value = range.getValue();
const srcSheet = e.source.getSheetByName("Sheet1");
const srcRange = srcSheet.getRange("A2:A" + srcSheet.getLastRow()).createTextFinder(value).matchEntireCell(true).findNext();
if (srcRange) {
srcRange.offset(0, 1, 1, srcSheet.getLastColumn() - 1).copyTo(range.offset(0, 1));
}
}
我所取得的成就如下:
function votazioni() {
var spreadsheet = SpreadsheetApp.getActive();
var activeSheet= spreadsheet.getActiveSheet();
var baseDati= spreadsheet.getSheetByName("Foglio2");
var cellRange = activeSheet.getActiveCell();
var imput= activeSheet.getActiveCell().getValue();
var indiceImput= cellRange.getColumn();
var copiaDati=baseDati.getActiveRange(1,indiceImput).getValue();
for (var i=1; i<1204; i++){
if (imput == copiaDati) {
for( var j=2; j<7; j++){
var copiaValore=baseDati.getRange (j,indiceImput).getValue();
activeSheet.getRange(j,indiceImput).setValue(copiaValore);
}
i=1204;
}
}
}
函数votazioni(){
var电子表格=SpreadsheetApp.getActive();
var activeSheet=spreadsheet.getActiveSheet();
var baseDati=电子表格.getSheetByName(“Foglio2”);
var cellRange=activeSheet.getActiveCell();
var imput=activeSheet.getActiveCell().getValue();
var indicateimput=cellRange.getColumn();
var copiaDati=baseDati.getActiveRange(1,indiceInput.getValue();
对于(var i=1;i我相信您的目标如下
- 将
放入“Sheet2”的单元格“A2”时,您需要从“Sheet1”的列“A”中搜索45
的值,并将搜索到的行复制到“Sheet2”45
- 您希望使用谷歌应用程序脚本实现这一点
- 在您的脚本中,
和input
进行了比较。但似乎没有扫描“Sheet1”的“A”列copiaDati
- 在这种情况下,我认为OnEdit触发器可能适合实现您的目标。当使用OnEdit触发器时,当编辑“Sheet2”的“A”列时,脚本可以自动运行。我认为这种情况可能对您的情况有用
- 在这个示例脚本中,根据您的问题,使用了“Sheet1”和“Sheet2”的工作表名称。因此,如果您的实际情况与它们不同,请修改它们
- 此脚本的流程如下所示
- 检查是否编辑了“Sheet2”的“A”列
- 编辑“Sheet2”的列“A”时,检索编辑的值
- 从“Sheet1”的“A”列中搜索编辑的值。在这种情况下,使用TextFinder
- 将行从“Sheet1”复制到“Sheet2”
- 在本脚本中,为了实现您的目标,使用了simple trigger的OnEdit触发器。因此,当您在脚本编辑器中直接运行
功能时,会发生错误。请注意这一点。运行脚本时,请编辑“Sheet2”的“A”列。OnEdit
- 如果要手动将脚本运行到活动单元格,还可以使用以下脚本。在这种情况下,可以在脚本编辑器中运行脚本
function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getActiveSheet(); const range = sheet.getActiveCell(); if (sheet.getSheetName() != "Sheet2" || range.getColumn() != 1 || range.getRow() == 1) return; const value = range.getValue(); const srcSheet = ss.getSheetByName("Sheet1"); const srcRange = srcSheet.getRange("A2:A" + srcSheet.getLastRow()).createTextFinder(value).matchEntireCell(true).findNext(); if (srcRange) { srcRange.offset(0, 1, 1, srcSheet.getLastColumn() - 1).copyTo(range.offset(0, 1)); } }
onEdit
是MOFIDID。使用此脚本时,请在“Sheet2”的“a”列中输入一个值。在这种情况下,当put值存在于“Sheet2”的“a”列中时,put值将被删除。另一方面,当put值不存在于“Sheet2”的“a”列中时,从“Sheet1”的“A”列中搜索put值并复制该行
function onEdit(e) {
const range = e.range;
const sheet = range.getSheet();
if (sheet.getSheetName() != "Sheet2" || range.getColumn() != 1 || range.getRow() == 1) return;
const value = range.getValue();
const values = sheet.getRange("A2:A" + sheet.getLastRow()).getValues();
values.splice(range.getRow() - 2, 1);
if (values.flat().includes(value)) {
range.clearContent();
return;
}
const srcSheet = e.source.getSheetByName("Sheet1");
const srcRange = srcSheet.getRange("A2:A" + srcSheet.getLastRow()).createTextFinder(value).matchEntireCell(true).findNext();
if (srcRange) {
srcRange.offset(0, 1, 1, srcSheet.getLastColumn() - 1).copyTo(range.offset(0, 1));
}
}
- 如果您不想删除“Sheet2”上存在的put值,请删除
range.clearContent();