私はしばらくの間、Googleスクリプトを使用してきました。スクリプトの目的は、非表示/非表示のドロップダウンが選択されたときに、3つのタブ内の特定の行の表示/非表示を切り替えることです。私は潜在的に2つの問題を解決したいと思うし、そこに何か有益な情報を見つけることができないinterwebs:Google Script - タイムアウトと簡略化
1)私はスクリプトが動作の順に実行されると思う。そのため、タブのドロップダウンを選択すると、スクリプトの最初の「レイヤー」であるため、すぐに結果が得られます。 2番目のタブはスクリプトの2番目のレイヤーなので遅く、3番目のタブは3番目のレイヤーなのでかなり時間がかかります。このスクリプトを合理化してタブ機能を同等に高速にする方法はありますか?
2)3番目のタブでは、スクリプトがタイムアウトするように見えます。すべての行は表示されませんが、ドロップダウンで非表示にすると、特定の行で停止します。ただし、スクリプトに行って手動で実行すると、完全に機能します。以下は、私が使用しているスクリプト(私は下の行の多くを削除しは、それ以外の場合はかなり長くなるでしょう)です。
function onEdit(e) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("TX MD 2017");
var row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{ s.hideRows(5);
s.hideRows(7);
s.hideRows(9);}
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
s = ss.getSheetByName("DC MD 2017");
row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{ s.hideRows(6);
s.hideRows(7);
s.hideRows(9); }
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
s = ss.getSheetByName("ATL MD 2017");
row = s.getRange('C2').getValues();
s.showRows(1);
for(var i=0; i< row.length; i++){ if(row[i] == 'hide')
{s.hideRows(6);
s.hideRows(7);
s.hideRows(9);}
else if(row[i] == 'unhide'){s.unhideRow(ss.getDataRange());}
}
}
、私は' for'が必要ではないと思います。また、あなたは 'ss.getDataRange()'を3回呼び出しましたが、その値は変更されません。 –