オプション1:スクリプトにキーストロークを自動的に入力させますか?apps-scriptではサポートされていません。
オプション2:フィルター範囲の行が表現された基準に一致する場合、フィルターに必要なCONTINUEは自動である必要があるため、プログラムでCONTINUEを挿入する必要はありません。他に何か問題があるので、この赤いニシンに巻き込まれないでください。
あなたは「グーグルシートは名前の付いた範囲を認識しない」と言っています-これがあなたの解決策になると思うので、それが何を意味するのか知りたいです。FILTERステートメント内で名前付き範囲を使用できます。FormInput!A1:X
またはのような自由形式の範囲を使用することもできますFormInput!E1:E.
スクリプトを使用して名前付き範囲を操作しようとしている場合は、「removeNamedRange()はAppsScriptを介して作成された名前付き範囲のみを削除する」という既知の問題が発生している可能性があります。(これを回避するには、名前付き範囲を手動で削除してから、スクリプトからのみ作成します。)
これは、シート上のすべてのデータの名前付き範囲を作成するために使用する関数です。あなたはこれをあなたの状況に適応させることができます。(私はこれをFILTERの代わりにQUERY関数で使用します。代わりに、これを検討することをお勧めします。)
function setNamedRangeFromSheet(sheetName) {
// Cannot remove a named range that was added via UI - http://code.google.com/p/google-apps-script-issues/issues/detail?id=1041
var ss = SpreadsheetApp.getActiveSpreadsheet();
try { ss.removeNamedRange(sheetName) } catch (error) {};
var sheet = ss.getSheetByName(sheetName);
var range = sheet.getDataRange();
ss.setNamedRange(sheetName,range);
}
FILTERを使用するには、sourceArray(名前付き範囲にすることができます)の長さと、使用するすべての条件配列を一致させる必要があります。sourceArray内に同じ長さの単一列基準の名前付き範囲をプログラムで作成するには、sourceArray範囲でgetNumRows()を使用します。
これで、フォームの送信時にトリガーされる送信処理機能内に、次のようなものがあります。(トラブルレポートは「FormInput」という1つのシートにまとめられていると思います。必要に応じて調整してください。)
...
var ss = SpreadsheetApp.getActiveSpreadsheet();
try { ss.removeNamedRange("FormInput") } catch (error) {};
var sheet = ss.getSheetByName("FormInput");
var inputRange = sheet.getDataRange();
ss.setNamedRange("FormInput",inputRange);
try { ss.removeNamedRange("Criteria") } catch (error) {};
var criteriaCol = 4; // Another guess, that Column E contains our criteria
var criteriaRange = sheet.getRange(0,criteriaCol,inputRange.getNumRows(),1);
ss.setNamedRange("Criteria",criteriaRange);
...
これで、「ソフトウェアの問題」シートのA1の内容に次の内容が含まれている必要があります。(「バグ」を探していると仮定します。):
=FILTER(FormInput,Criteria="Bug")
先ほど、制限のない範囲について説明しました。名前付き範囲を正当化するのに十分なデータ操作を行っていない場合は、次のようにフィルターを設定できます。新しい入力が入ったときにフィルターを変更する必要はありません。
=FILTER(FormInput!A1:X,FormInput!E1:E="Bug")