2017-04-07 43 views
1

新手谷歌企業應用套件的編劇在這裏,需要Set_Formula上Insert_Row從IFTTT

我有一個IFTTT小程序通過電子郵件添加行到該電子表格:Data Test

我似乎已經設置正確的公式,但是當添加新行時,公式顯然不會自動填充到新行中。當插入一行,列A和B中的相應單元格不是空白時,我想在該行中設置某些公式。

我到目前爲止的腳本(見下文)確實給了我想要的公式,但只有在Row1中。 我想要腳本將這些相同的公式設置到插入的任何新行的相應單元格中。例如,IFTTT.com自動化將使用文本填充單元格A6和B6(即鏈接電子表格中的下一個空白行) - 我需要當前輸入的所有公式,然後應用於B6(與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"))'); 

} 

任何援助將不勝感激!

回答

1

嘗試了這一點:

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

複製並粘貼您的答案,或將其添加到我現有的代碼? –

+0

複製/粘貼,然後使用新的菜單功能 – OblongMedulla

+0

你會在我的頭上。什麼新的菜單功能? –

0

這一點是我在過去所做的那樣。我很驚訝地發現有一個setFormula命令,因爲我沒有在這種情況下使用它,下面的技術工作正常。

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); 

這是一個從你做什麼在我設置的所有數組值的運行setValues方法命令之前有一點不同。但這已經工作了好幾個月。