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

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

僅激活某些工作表時(shí)觸發(fā)腳本

僅激活某些工作表時(shí)觸發(fā)腳本

智慧大石 2023-04-27 17:13:21
我有幾張以“代理報(bào)告”開(kāi)頭,后跟名稱(chēng)的工作表,如下所示:“代理報(bào)告 - 約翰”、“代理報(bào)告 - 亞當(dāng)”等。我有一個(gè)腳本可以從特定單元格中讀取代理的名稱(chēng)并從該人的另一個(gè)電子表格中檢索數(shù)據(jù)。我想在激活以“代理報(bào)告”開(kāi)頭的工作表時(shí)觸發(fā)腳本,以便在工作表之間移動(dòng)時(shí),為“代理報(bào)告”工作表中的每個(gè)人更新工作表數(shù)據(jù)。到目前為止我有這個(gè):function onOpen(e) {  makeMenu();  var ss = SpreadsheetApp.getActiveSpreadsheet();  var sname = ss.getActiveSheet().getName();  if(sname.indexOf("Agent Report")>-1){    master();  }}代理報(bào)告不是第一個(gè)工作表,因此當(dāng)我打開(kāi)電子表格時(shí)腳本正確地創(chuàng)建了一個(gè)自定義菜單 (makeMenu),但是當(dāng)我切換到“代理報(bào)告”工作表時(shí)沒(méi)有被觸發(fā)(主)。當(dāng)我從“代理報(bào)告”表手動(dòng)運(yùn)行腳本時(shí),它運(yùn)行良好。我的問(wèn)題是:當(dāng)我切換到名稱(chēng)以“Agent Report”開(kāi)頭的工作表時(shí),我可以創(chuàng)建一個(gè)觸發(fā)器來(lái)運(yùn)行腳本嗎?onOpen()似乎不適合這個(gè)目的。如果這樣的觸發(fā)器不可能,是否可以有一個(gè)解決方法 - 一個(gè)遍歷每張工作表的循環(huán),檢查名稱(chēng),如果它包含“代理報(bào)告”,則運(yùn)行腳本。像這樣的東西:function onOpen(e) {  var ss = SpreadsheetApp.getActiveSpreadsheet();  var numberOfSheets = ss.getSheets().length;       for (var i = 0; i<=numberOfSheets; i ++) {    if(SOMETHING HERE.indexOf("Agent Report")[i] > -1){      master();    }  }}
查看完整描述

2 回答

?
青春有我

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

問(wèn)題:

根據(jù)官方文件:

onOpen(e)當(dāng)用戶(hù)打開(kāi)他們有權(quán)編輯的電子表格、文檔、演示文稿或表單時(shí),觸發(fā)器會(huì)自動(dòng)運(yùn)行。

這種方法的問(wèn)題是它僅在您打開(kāi)電子表格文件時(shí)onOpen執(zhí)行。因此,即使您在工作表之間切換或進(jìn)行任何其他操作,腳本也不會(huì)執(zhí)行,除非您再次刷新/打開(kāi)電子表格文件。也就是說(shuō),只會(huì)對(duì)你第一次打開(kāi)的sheet執(zhí)行。onOpen


解決方案 1:

要在不同工作表之間切換時(shí)執(zhí)行代碼,您可以使用onSelectionChange(e):

? function onSelectionChange(e) {

? ? makeMenu();

? ? const as = e.source.getActiveSheet();

? ? ? if (as.getName().indexOf("Agent Report")>-1){?

? ? ? ? master();

? ? ? }

? ? }

建議您選擇這種方法,因?yàn)?strong>每次您在腳本中進(jìn)行選擇更改時(shí),都會(huì)執(zhí)行代碼。


方案二(推薦):

正如您還建議的那樣,為了控制何時(shí)要執(zhí)行腳本,我建議您使用一個(gè)常規(guī)函數(shù)來(lái)遍歷所有工作表并檢查工作表名稱(chēng)是否符合條件。添加也onOpen執(zhí)行makeMenu()

function allSheets(){


? var ss = SpreadsheetApp.getActiveSpreadsheet();

? var sheets = ss.getSheets();

??

? sheets.forEach(sh=>{? ? ? ? ? ? ? ? ?

? if(sh.getName().indexOf("Agent Report")>-1){

? master();

? }});

}



function onOpen() {

? makeMenu();

}

您可以通過(guò)多種不同的方式執(zhí)行此常規(guī)功能:

  1. 腳本編輯器

  2. 創(chuàng)建自定義菜單并從電子表格文件中執(zhí)行

  3. 在電子表格文件中創(chuàng)建一個(gè)圖標(biāo)按鈕

  4. 創(chuàng)建一個(gè)時(shí)間驅(qū)動(dòng)的觸發(fā)器以在特定時(shí)間執(zhí)行


獎(jiǎng)金信息:

在這兩種方法中,您都可以替換

if(as.getName().indexOf("Agent?Report")>-1)

if(as.getName().includes("Agent?Report"))

它的作用完全相同,但對(duì)眼睛更友好。

查看完整回答
反對(duì) 回復(fù) 2023-04-27
?
慕萊塢森

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

最終的解決方案是使用可安裝的觸發(fā)器(不是簡(jiǎn)單的觸發(fā)器,這就是腳本沒(méi)有運(yùn)行 onOpen 的原因)和以下腳本:


function allSheets() {

? makeMenu();

? var ss = SpreadsheetApp.getActiveSpreadsheet();

? var sheets = ss.getSheets();

? sheets.forEach(sh=>{

? ? SpreadsheetApp.setActiveSheet(sh);? ? ?

? ? if (sh.getName().includes("Agent Report")) {

? ? ? master();

? ? }

? })

? SpreadsheetApp.setActiveSheet(sheets[0]);

}

查看完整回答
反對(duì) 回復(fù) 2023-04-27
  • 2 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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