2017-04-07 2 views
1

Novice Google Apps Autor hier,zu Set_Formula auf Insert_Row von IFTTT Need

Ich habe ein IFTTT-Applet, das eine Zeile in dieser Tabelle per E-Mail ergänzt: Data Test

I scheinen die Formeln korrekt eingerichtet zu haben, Wenn jedoch eine neue Zeile hinzugefügt wird, werden die Formeln offensichtlich nicht automatisch in diese neue Zeile eingefügt. Wenn eine Zeile eingefügt wird, in der die entsprechenden Zellen in Spalte A und B nicht leer sind, möchte ich bestimmte Formeln in dieser Zeile festlegen.

Das Skript, das ich bisher habe (siehe unten) gibt mir die Formeln, die ich will, aber nur in Row1. Ich möchte, dass das Skript dieselben Formeln in entsprechende Zellen jeder neuen Zeile einfügt, die eingefügt wird.

Zum Beispiel wird die IFTTT.com-Automatisierung die Zellen A6 und B6 mit Text füllen (dh die nächste leere Zeile in der verknüpften Tabelle) - Ich brauche alle aktuell eingegebenen Formeln dann auf B6 anwenden (im Gegensatz zu B2)

function myFunction() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getSheets()[0]; 

    var cell = sheet.getRange("C1"); 
    cell.setFormula('=IFERROR(MID($B2,SEARCH("details",$B2)+7,SEARCH(",",$B2)-SEARCH("details",$B2)-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
    var cell = sheet.getRange("D1"); 
    cell.setFormula('=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B2,FIND("$",B2),LEN(B2))," ",REPT(" ",100)),100)),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
    var cell = sheet.getRange("E1"); 
    cell.setFormula('=IFERROR(MID($B2,SEARCH("exceed",$B2)+7,SEARCH("%",$B2)-SEARCH("exceed",$B2)-6),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
    var cell = sheet.getRange("F1"); 
    cell.setFormula('=IFERROR(MID($B2,SEARCH("due",$B2)+3,SEARCH(";",$B2)-SEARCH("due",$B2)-3),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
    var cell = sheet.getRange("G1"); 
    cell.setFormula('=IFERROR(MID($B2,SEARCH("held on",$B2)+7,SEARCH(". Lottery",$B2)-SEARCH("held on",$B2)-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
    var cell = sheet.getRange("H1"); 
    cell.setFormula('=IFERROR(MID($B2,SEARCH("posted by",$B2)+9,SEARCH(". ",$B2)-SEARCH("",$B2)-167),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 

} 

Jede Hilfe wird sehr geschätzt!

Antwort

1

Probieren Sie dies aus:

var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
function onOpen() { 
 
    var items = [ 
 
    {name: 'Add Row', functionName: 'addrow'}, 
 
    ]; 
 
    ss.addMenu('Add Row', items); 
 
    } 
 
     
 
function addrow() { 
 
    var ui = SpreadsheetApp.getUi(); 
 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
 
    var sheet = ss.getSheets()[0]; 
 
    var result = ui.prompt(
 
     'Enter number of Row', 
 
     ui.ButtonSet.OK_CANCEL); 
 

 
    // Process the user's response. 
 
    var button = result.getSelectedButton(); 
 
    var rownum = result.getResponseText(); 
 
    if (button == ui.Button.OK) { 
 
    // User clicked "OK". 
 
    sheet.insertRowAfter(rownum); 
 
    var cell = sheet.getRange("C" + rownum); 
 
    cell.setFormula('=IFERROR(MID($B' + rownum +',SEARCH("details",$B' + rownum +')+7,SEARCH(",",$B' + rownum +')-SEARCH("details",$B' + rownum +')-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    var cell = sheet.getRange("D" + rownum); 
 
    cell.setFormula('=IFERROR(TRIM(LEFT(SUBSTITUTE(MID(B' + rownum +',FIND("$",B' + rownum +'),LEN(B' + rownum +'))," ",REPT(" ",100)),100)),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    var cell = sheet.getRange("E" + rownum); 
 
    cell.setFormula('=IFERROR(MID($B' + rownum +',SEARCH("exceed",$B' + rownum +')+7,SEARCH("%",$B' + rownum +')-SEARCH("exceed",$B' + rownum +')-6),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    var cell = sheet.getRange("F" + rownum); 
 
    cell.setFormula('=IFERROR(MID($B' + rownum +',SEARCH("due",$B' + rownum +')+3,SEARCH(";",$B' + rownum +')-SEARCH("due",$B' + rownum +')-3),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    var cell = sheet.getRange("G" + rownum); 
 
    cell.setFormula('=IFERROR(MID($B' + rownum +',SEARCH("held on",$B' + rownum +')+7,SEARCH(". Lottery",$B' + rownum +')-SEARCH("held on",$B' + rownum +')-7),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    var cell = sheet.getRange("H" + rownum); 
 
    cell.setFormula('=IFERROR(MID($B' + rownum +',SEARCH("posted by",$B' + rownum +')+9,SEARCH(". ",$B' + rownum +')-SEARCH("",$B' + rownum +')-167),HYPERLINK("https://housing.sfgov.org/listings","See Housing Portal"))'); 
 
    } else if (button == ui.Button.CANCEL) { 
 
    // User clicked "Cancel". 
 

 
    } else if (button == ui.Button.CLOSE) { 
 
    // User clicked X in the title bar. 
 

 
    } 
 
}

+0

Kopieren und Einfügen Ihrer Antwort oder Hinzufügen zu meinem vorhandenen Code? –

+0

Kopieren/Einfügen und verwenden Sie dann die neue Menüfunktion – OblongMedulla

+0

Sie gehen hier über meinen Kopf. Welche neue Menüfunktion? –

0

Dies ist etwas, das ich in der Vergangenheit getan haben. Ich war überrascht zu erfahren, dass es einen setFormula-Befehl gab, weil ich ihn in dieser Situation nicht verwendet habe und die unten beschriebene Technik funktioniert gut.

for(var i = 0;i < rowA[0].length; i++) 
    { 
    var initial_value = rowA[0][i]; 
    //rowA[0][i] = '=ArrayFormula(IF(Row($B:$B)=1,"' + initial_value + '",IF(LEN($B:$B),IF(REGEXMATCH($C:$C,"(?i)(' + initial_value + ')"),$D:$D,""),)))'; 
    rowA[0][i] = '=ArrayFormula(IF(Row(' + sr + ')=1,"' + initial_value + '",IF(LEN(' + sr + '),IF(REGEXMATCH(' + sr + ',"(?i)(' + initial_value + ')"),' + vr + ',""),)))'; 
    } 
    rowrng.setValues(rowA); 

Es ist ein wenig anders aus, was Sie dabei, dass ich all die Array-Werte habe die Einrichtung vor dem setValues ​​Befehl ausgeführt wird. Aber das funktioniert seit Monaten.