2016-03-29 10 views
0

私は内部にテキストフィールドを持つGoogleフォームを持っています。GAS投稿前にフィールドを評価するGoogleフォーム

投稿を行う前にエンドユーザーが入力したコンテンツを評価したいが、検索の数日後にはできなかった。

code.gsでは、テキストフィールドにアクセスしてそのプロパティを取得できます。 sdi.htmlが表示された場合は、これが機能doEval()の呼び出しをトリガーします。

私の問題は、Googleフォーム自体にハンドラを追加する方法がわからないため、テキストフィールドの内容が自分のアプリで受け入れられるものかどうかを確認できることです。たとえば、これが数値の場合は検証し、そうであればフォームを送信し、そうでない場合は送信プロセスをキャンセルしてエラーメッセージを表示します。

従来のGoogleフォームでは、ハンドラを作成する方法がありましたが、現在はすべてHtmlServiceというアプローチで動作していますが、どのように行うのかの例はありません。

code.gs

function doGet() 
{ 
    return HtmlService.createHtmlOutputFromFile('sdi') 
    .setSandboxMode(HtmlService.SandboxMode.IFRAME); 
} 

function doEval() 
{ 
    var frm = FormApp.getActiveForm(); 
    var items = frm.getItems(); 
    var text= items[1].asTextItem(); 
    text.setTitle("I can access the field from here!"); 
} 

sdi.html

<!DOCTYPE html> 
<html> 
<head> 
<script> 
    function onSuccess(isOk) 
    { 
    } 

    google.script.run.withSuccessHandler(onSuccess) 
     .doEval(); 
</script> 
</head> 
<body> 
</body> 
</html> 
+0

は、それを提出する形でのボタンがありますか? 'typeof'を使って値のデータ型をテストすることができます。現在、 'google.script.run.'は関数の中にありません。関数の中に入れた場合、 'google.script.run.'を実行するかどうかを指定できます。 –

+0

あなたが表示するものはGoogleフォームではありません。それはwebappです。 –

+0

こんにちは、はい、あなたは正しいです、私は最初は間違って精緻化しました、それは形式ですが、私はそれを絶対に見せません。 Plsは私がSpencer Eastonに行った返信を、私がよりよく説明しているところで確認します。乾杯。 –

答えて

0

あなたは条件文を使用してから、Goolge上のユーザの入力を検証することができ

は、ここに私のコードです。ここでは非常にいいリファレンスです: https://support.google.com/docs/answer/3378864?hl=en

ライブフォームの内部でスクリプトを実行する方法はありません。フォーム送信にのみ応答することができます。

フォームを検証するためにWebアプリケーションを使用しようとしているように見えますが、私はあなたのコードで混乱します。これは動作しません。フォームに添付されているスクリプトエディタを使用します。フォーム送信を処理するために必要なコードを書くことができます。クイックスタートのスクリプトを作成するフォームをチェックアウト:

https://developers.google.com/apps-script/quickstart/forms

+0

Thxが返信中です。私は新しいGoogleフォームを使用していますが、条件はまだ用意されていません。第二に、私はスクリプトエディタを使用しています、これは私が 'code.gs'を書いた場所です。私はGoogleフォームに添付しました。実際に私の質問の根源は、どのように(スクリプトエディタを使用して)投稿する前にフォームにアクセスするのですか?エンドユーザが入力したデータが有効であるかどうかを検証するために、提出する。進んでください。 –

関連する問題