![](/img/trans.png)
[英]Adding a drop-down menu (data validation) after each row of a query result in Google Sheet
[英]Getting script to run from drop down menu in sheet with multiple tabs
希望我在正確的地方。 我正在制定維護計划,但遇到了一些麻煩。 我所擁有的是在工作表中創建的工作訂單表格,我編寫了一個腳本,它將以新名稱(與工作表中的單元格值綁定)保存模板的副本,驅動器上的文件夾。 我也有這個腳本在谷歌日歷上安排工作訂單。 此代碼如下。
function Create() {
var ss = SpreadsheetApp.getActiveSpreadsheet(); // Get spreadsheet
var id = ss.getId(); // Get spreadsheet ID
var sstocopy = DriveApp.getFileById(id); //Get spreadsheet with DriveApp
var sheet = ss.getActiveSheet(); // Grab the sheet in order to find the name of the new spreadsheet
to be created
var sheet_name = sheet.getRange("C4").getValue(); // Get the value, in this case: Project Urn
var folder = DriveApp.getFolderById("1D9gWUuHTPbWkzpSOp5vQdg-K8N6kUGo6"); // Get the folder where
the sheet needs to be placed.
sstocopy.makeCopy(sheet_name,folder); // Make the copy of the sheet in that folder.
var eventCal =
CalendarApp.getCalendarById("c_4um01s3eqvq7d5kqi0ga4i1098@group.calendar.google.com") ;
var eventname = sheet_name;
var eventstart = sheet.getRange("E3").getValue();
var eventstop = sheet.getRange("E4").getValue();
eventCal.createAllDayEvent(eventname, eventstart, eventstop);
}
現在這段代碼運行良好,我最初在工作表上有一個可點擊的按鈕來運行這段代碼,並且在計算機上運行良好。 棘手的部分是我希望能夠從 Ipad 的移動應用程序中運行它。 所以我一直在嘗試設置一個下拉菜單來運行腳本。 我的工作表文件有幾個頁面/標簽,我認為這是給我帶來問題的原因。 我假設我需要調用正確的工作表,但我似乎無法讓它工作。
我嘗試的第一個代碼是這個(除了我的下拉菜單在 F3 中)
function onEdit(e) {
if (e.range.getA1Notation() == 'A1') {
if (/^\w+$/.test(e.value)) {
eval(e.value)();
e.range.clear();
}
}
}
但我收到 e.range.getA1Notation 的未定義錯誤。 我嘗試了其他一些事情,但我真的不知道自己在做什么,因為我的理解非常基礎,而且我已經很長時間沒有真正做過這樣的事情了。 任何幫助,將不勝感激。
這是您可以使用復選框作為按鈕來運行功能的一種方法。 為此,我使用了一個可安裝的 onEdit(e) 觸發器,以便它可以執行需要權限的功能。
function onMyEdit(e) {
e.source.toast('Entry');
console.log(JSON.stringify(e));//use this to see all of the features in the event object
const sh=e.range.getSheet();
if(sh.getName()=="Your Sheet Name" && e.range.columnStart==1 && e.value=="TRUE" ) {
e.range.setValue('FALSE');
switch(e.range.rowStart) {
case 1:
e.source.toast('function 1');
break;
case 2:
e.source.toast('function 2');
}
}
}
我沒有任何 function 附加的想法是我有 e.source.toast('function 1'); 您可以用 function 調用替換整行。 這被設置為只運行一頁,但如果需要可以修改。
Animation:
如您所見,它可以設置為每次重置復選框,而不是顯示您選擇的 function 的 toast。 您始終可以在 function 名稱的復選框旁邊放置標簽。
而這個例子使用datavalidation創建一個下拉function選擇過程。 重要的是要記住 onEdit() function 必須在 30 秒內完成。
function onMyEdit(e) {
e.source.toast('Entry');
console.log(JSON.stringify(e));
const sh=e.range.getSheet();
if(sh.getName()=="Your Sheet Name" && e.range.columnStart==1 && e.value=="TRUE" ) {
e.range.setValue('FALSE');
switch(e.range.rowStart) {
case 1:
e.source.toast('function 1');
break;
case 2:
e.source.toast('function 2');
}
}
if(sh.getName()=="Your Sheet Name" && e.range.columnStart==2 && e.range.rowStart==1 && e.value) {
switch(e.value) {
case '1':
e.source.toast('function 1');
break;
case '2':
e.source.toast('function 2');
}
e.range.setValue('');
}
}
Animation:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.