Google apps script 将图纸范围定义为在单独的图纸上

Google apps script 将图纸范围定义为在单独的图纸上,google-apps-script,google-sheets,Google Apps Script,Google Sheets,目前正在使用这个GoogleApps脚本在编辑时填充同一行中的公式,但我希望看到它填充同一文件中不同工作表上的单元格 似乎我需要将destrange定义为单独目的地工作表上的下一个空行,但我不确定如何做到这一点 function onEdit(e){ var ui = SpreadsheetApp.getUi(); var ss = SpreadsheetApp.getActiveSpreadsheet(); var range = e.range; var sheet = range.get

目前正在使用这个GoogleApps脚本在编辑时填充同一行中的公式,但我希望看到它填充同一文件中不同工作表上的单元格

似乎我需要将
destrange
定义为单独目的地工作表上的下一个空行,但我不确定如何做到这一点

function onEdit(e){
var ui = SpreadsheetApp.getUi(); 
var ss = SpreadsheetApp.getActiveSpreadsheet();
var range = e.range;
var sheet = range.getSheet()
var newSheet = ss.getSheetByName("Apps")
var sheetName = sheet.getName()
if(sheetName != "Form"){
   return                            //exit function
}  
var columnOfCellEdited = range.getColumn();
if (columnOfCellEdited === 1) 
 var range2 = range.getRow();
 var destrange = newSheet.getLastRow()
 sheet = newSheet
     // adds the formulas
     var cell = sheet.getRange("C" + destrange);
  cell.setFormula('=Form!$B' + destrange);
     var cell = sheet.getRange("D" + destrange);
     cell.setFormula('=Form!$C' + destrange);
     var cell = sheet.getRange("E" + destrange);
     cell.setFormula('=Form!$D' + destrange);
     var cell = sheet.getRange("F" + destrange);
     cell.setFormula('=Form!$E' + destrange);
     var cell = sheet.getRange("G" + destrange);
     cell.setFormula('=Form!$F' + destrange);
     var cell = sheet.getRange("H" + destrange);
     cell.setFormula('=Form!$G' + destrange);
    }

只需将sheet变量设置为要写入的工作表

例如:在下面的代码中:

var sheet = range.getSheet()
要获得名为“Sheet2”的工作表,请执行以下操作

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet2")
要在新工作表上获得空行,请执行以下操作

 var destRange = sheet.getLastRow()+1 
getSheetByName上的文档可以是

还要注意的是,一次编辑一个单元格的方法并不是最有效的方法 请看这个问题,以了解如何进行批量更新

编辑:

最终代码:

function onEdit(e){
    var ui = SpreadsheetApp.getUi(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var range = e.range;
    var sheet = range.getSheet()
    var newSheet = ss.getSheetByName("Sheet2")
    var sheetName = sheet.getName()
    if(sheetName != "Form Responses"){
       return                            //exit function
    }  
    var columnOfCellEdited = range.getColumn();
    if (columnOfCellEdited === 1) 
     var range2 = range.getRow();
     var destrange = newSheet.getLastRow()
     sheet = newSheet
     // adds the formulas
     var cell = sheet.getRange("C" + destrange);
  cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH(":",$B' + destrange +')+1,SEARCH(",",$B' + destrange +')-SEARCH(":",$B' + destrange +')-1),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("D" + destrange);
     cell.setFormula('=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B' + destrange +',FIND("$",B' + destrange +'),LEN(B' + destrange +'))," ",REPT(" ",100)),100)),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("E" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("exceed",$B' + destrange +')+7,SEARCH("%",$B' + destrange +')-SEARCH("exceed",$B' + destrange +')-6),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("F" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("due",$B' + destrange +')+3,SEARCH(";",$B' + destrange +')-SEARCH("due",$B' + destrange +')-3),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("G" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("held on",$B' + destrange +')+7,SEARCH(". Lottery",$B' + destrange +')-SEARCH("held on",$B' + destrange +')-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("H" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("posted by",$B' + destrange +')+9,SEARCH(". ",$B' + destrange +')-SEARCH("",$B' + destrange +')-167),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
    }

希望对您有所帮助!

您只需将sheet变量设置为要写入的工作表即可

例如:在下面的代码中:

var sheet = range.getSheet()
要获得名为“Sheet2”的工作表,请执行以下操作

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("Sheet2")
要在新工作表上获得空行,请执行以下操作

 var destRange = sheet.getLastRow()+1 
getSheetByName上的文档可以是

还要注意的是,一次编辑一个单元格的方法并不是最有效的方法 请看这个问题,以了解如何进行批量更新

编辑:

最终代码:

function onEdit(e){
    var ui = SpreadsheetApp.getUi(); 
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var range = e.range;
    var sheet = range.getSheet()
    var newSheet = ss.getSheetByName("Sheet2")
    var sheetName = sheet.getName()
    if(sheetName != "Form Responses"){
       return                            //exit function
    }  
    var columnOfCellEdited = range.getColumn();
    if (columnOfCellEdited === 1) 
     var range2 = range.getRow();
     var destrange = newSheet.getLastRow()
     sheet = newSheet
     // adds the formulas
     var cell = sheet.getRange("C" + destrange);
  cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH(":",$B' + destrange +')+1,SEARCH(",",$B' + destrange +')-SEARCH(":",$B' + destrange +')-1),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("D" + destrange);
     cell.setFormula('=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B' + destrange +',FIND("$",B' + destrange +'),LEN(B' + destrange +'))," ",REPT(" ",100)),100)),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("E" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("exceed",$B' + destrange +')+7,SEARCH("%",$B' + destrange +')-SEARCH("exceed",$B' + destrange +')-6),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("F" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("due",$B' + destrange +')+3,SEARCH(";",$B' + destrange +')-SEARCH("due",$B' + destrange +')-3),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("G" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("held on",$B' + destrange +')+7,SEARCH(". Lottery",$B' + destrange +')-SEARCH("held on",$B' + destrange +')-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
     var cell = sheet.getRange("H" + destrange);
     cell.setFormula('=IFERROR(MID($B' + destrange +',SEARCH("posted by",$B' + destrange +')+9,SEARCH(". ",$B' + destrange +')-SEARCH("",$B' + destrange +')-167),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))');
    }

希望有帮助!

@minky\u boodle可以通过以下步骤设置触发器:

然后设置它:
@minky\u boodle可通过以下步骤设置触发器:

然后设置它:

我对这个脚本没有任何超时问题。至少还没有。谢谢你的建议。最终的脚本会是什么样子?似乎不起作用。也许我需要对脚本做更多的工作。我试图做的是:只要有表单提交,就从新行传输数据,从中的B-G列获取数据
表单响应
并发送到
工作表2的第一个空行
。当表单响应提交到工作表时,OneEdit不会触发。您必须使用from submit trigger。此脚本没有任何超时问题。至少还没有。感谢您的建议。最终的脚本会是什么样子?没有sn似乎不起作用。也许我需要在脚本上做更多的工作。我试图做的是:任何时候有表单提交,从新行传输数据,从
表单响应中的B-G列中提取数据,并发送到
第2张表的第一个空白行。当表单响应提交给shee时,OneEdit不会触发t、 你将不得不使用从提交触发器仍然没有得到我想要的。对上面的原始帖子做了一些编辑,希望在周一下午之前解决这个问题。死线仍然没有得到我想要的。对上面的原始帖子做了一些编辑,希望在周一下午的截止日期之前解决这个问题