第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

替換 Google 腳本應(yīng)用中的單元格值

替換 Google 腳本應(yīng)用中的單元格值

寶慕林4294392 2024-01-18 14:59:10
我正在嘗試編寫一個(gè)腳本,當(dāng)工作表中的單元格發(fā)生更改時(shí)"Негатив отсутствует",它將用值替換另一個(gè)工作表中的單元格的值"Нерелевант"。請(qǐng)幫忙,我做錯(cuò)了什么?function ChangeTone(event) {   if (event.source.getActiveRange().getValue()=="Негатив отсутствует" && event.source.getActiveSheet()=="Разметка ТОП100 по суду"){    var sheet = SpreadsheetApp.getActiveSheet();    var currRow = sheet.getActiveCell().getRow();    var value = sheet.getRange(currRow, 1).getDisplayValue();    var pasteSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Тональность");    var data = pasteSheet.getDataRange().getValues();//    if(currRow > 2){//      sheet.deleteRow(currRow);//    }    for(var i = 1; i<data.length;i++){          if(data[i][1] == value){            pasteSheet.getRange((i), 2).clear({contentsOnly: true});            pasteSheet.getRange((i), 2).setValue('Нерелевант');            break;          }  };//    sheet.getActiveCell().setValue("");        }}
查看完整描述

2 回答

?
慕田峪7331174

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個(gè)贊

說(shuō)明/問題:

問題:

您的代碼有一個(gè)明顯的問題,特別是在這里:

event.source.getActiveSheet()=="Разметка ТОП100 по суду"

您正在將工作表對(duì)象與字符串進(jìn)行比較,這將始終返回false。正確的方法是:

event.source.getActiveSheet().getName()=="Разметка ТОП100 по суду"

但在這里我也嘗試優(yōu)化你的代碼,因?yàn)樗屎艿汀?/p>

優(yōu)化:

您沒有充分利用事件對(duì)象。

  • SpreadsheetApp.getActiveSpreadsheet()可以替換為e.source.

當(dāng)您只需要執(zhí)行一次時(shí),您還可以多次定義相同的變量:

  • 對(duì)于event.source.getActiveSheet()并且var sheet = SpreadsheetApp.getActiveSheet();您可以定義一個(gè)變量來(lái)存儲(chǔ)活動(dòng)工作表對(duì)象并在需要時(shí)調(diào)用它。

最后但并非最不重要的。我不太確定您關(guān)于for循環(huán)的邏輯,因?yàn)槟趩栴}中沒有提到它。

但我看到,一旦源值與粘貼表中的值匹配,您就會(huì)使用for循環(huán)、if語(yǔ)句和break一行來(lái)轉(zhuǎn)義循環(huán)。for

  • for您可以使用findIndex來(lái)查找與 criteria 匹配的值,而不是使用循環(huán)data[i][1] == value。

  • getDataRange()如果您打算只使用一列,則不需要完整的內(nèi)容,因此我也更改了該部分。

解決方案:

function onEdit(e){

?const ss = e.source;

?const ar = e.range;

?const activeSheet = ss.getActiveSheet();

?const pasteSheet = ss.getSheetByName("Тональность");

? if (ar.getValue()=="Негатив отсутствует" && activeSheet.getName()=="Разметка ТОП100 по суду"){

? ? const value = activeSheet.getRange(ar.getRow(), 1).getValue();

? ? const data = pasteSheet.getRange('B1:B'+pasteSheet.getLastRow()).getValues().flat();

? ? const indx = data.findIndex((element) => element == value);

? ? if (indx>-1){

? ? ? const pasteRng = pasteSheet.getRange(indx+1,2);

? ? ? pasteRng.clearContent();

? ? ? pasteRng.setValue('Нерелевант');? ?

? }

? }

}

讓我知道這是否對(duì)您有用,否則我想對(duì)其進(jìn)行修改。


查看完整回答
反對(duì) 回復(fù) 2024-01-18
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗(yàn) 獲得超12個(gè)贊

非常感謝!該腳本有效=)我之前也制作過一個(gè)有效腳本。但這是我的第一個(gè)腳本,所以它要慢得多,而且不那么……簡(jiǎn)潔。它也是用觸發(fā)器觸發(fā)的,而你的則作為一個(gè)簡(jiǎn)單的事件工作。我的舊版本:


function ChangeTone(event) { 

  if (event.source.getActiveRange().getValue()=="Негатив отсутствует" && event.source.getActiveSheet().getName() == "Разметка ТОП100 СУД"){

    var sheet = SpreadsheetApp.getActiveSheet();

    var currRow = sheet.getActiveCell().getRow();

    sheet.getRange("A"+currRow+":F"+currRow).setBackground('#ff5a5a');

    var value = sheet.getRange(currRow, 1).getDisplayValue();

    var pasteSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Тональность");

    var data = pasteSheet.getDataRange().getValues();

    for(var i = 1; i<data.length;i++){

          if(data[i][0] == value){

           pasteSheet.getRange((i+1), 2).setValue('Нерелевант');

           sheet.getRange("C"+currRow+":F"+currRow).deleteCells(SpreadsheetApp.Dimension.ROWS);

          }          

  };

    sheet.getRange("A"+currRow+":B"+currRow).setBackground('#ffffff'); 

}

}

因此,在替換單元格值后,使用您的代碼并添加行刪除。最終版本:


function onEdit(e){

 const ss = e.source;

 const ar = e.range;

 const arRow = ar.getRow();

 const activeSheet = ss.getActiveSheet();

 const pasteSheet = ss.getSheetByName("Тональность");

  if (ar.getValue()=="Негатив отсутствует" && activeSheet.getName()=="Разметка ТОП100 СУД"){

    const value = activeSheet.getRange(arRow, 1).getValue();

    const data = pasteSheet.getRange('A1:A'+pasteSheet.getLastRow()).getValues().flat();

    const indx = data.findIndex((element) => element == value);

    if (indx>-1){

      const pasteRng = pasteSheet.getRange(indx+1,2);

      pasteRng.clearContent();

      pasteRng.setValue('Нерелевант');

      activeSheet.getRange("C"+arRow+":F"+arRow).deleteCells(SpreadsheetApp.Dimension.ROWS);

  }

  }

}

再次感謝您的幫助=)


查看完整回答
反對(duì) 回復(fù) 2024-01-18
  • 2 回答
  • 0 關(guān)注
  • 176 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)