質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

624閲覧

「Submit」をクリックされることで表示される、文字「Got it!」を2秒で消す方法

swing

総合スコア3

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2022/07/30 05:27

前提

元コード記載ページ

に記載されているコードを流用させていただき、ファイルをグーグルドライブにアップロードしています

「ファイルを選択」の際に複数のファイルを選択できないので、「ファイル選択」作業を複数回行うことにしました
「ファイル選択」→「Submit」→「Got it!」 →「ファイル選択」→、、、
その際に、「Got it!」が表示されたままですと、2回目のファイルアップロードが正常に完了したかがわからないので、「Got it!」が2秒後に消えたら、2回目が完了した際にも再度、「Got it!」を表示でき、正常にアップロードができたことを確認できると考えております

実現したいこと

・ファイルがアップロードされた際に表示される、「Got it!」が2秒後に消したい
(「ファイル選択」時にctrlキーにて複数選択できればいいのですが、難しそうなので、「Got it!」を消すことを考えております)

・「Got it!」が2秒後に消えるのと同時に、最初にファイル添付したファイル名も一緒に消えてくれるとなお嬉しいです

発生している問題・エラーメッセージ

「Got it!」が表示されたままで消えない、又は、「Submit」をクリックすると何もない真っ白なページが表示される

該当のソースコード

上述コード記載ページから転記いたします

### コード.gs function doGet() { return HtmlService.createHtmlOutputFromFile('index'); } function processForm(formObject) { var formBlob = formObject.myFile; var driveFile = DriveApp.createFile(formBlob); return driveFile.getUrl(); } ### **index.html** <!DOCTYPE html> <html> <head> <base target="_top"> <script> // Prevent forms from submitting. function preventFormSubmit() { var forms = document.querySelectorAll('form'); for (var i = 0; i < forms.length; i++) { forms[i].addEventListener('submit', function(event) { event.preventDefault(); }); } } window.addEventListener('load', preventFormSubmit); function handleFormSubmit(formObject) { google.script.run.withSuccessHandler(updateUrl).processForm(formObject); } function updateUrl(url) { var div = document.getElementById('output'); div.innerHTML = '<a href="' + url + '">Got it!</a>'; } </script> </head> <body> <form id="myForm" onsubmit="handleFormSubmit(this)"> <input name="myFile" type="file" /> <input type="submit" value="Submit" /> </form> <div id="output"></div> </body> </html>

試したこと

setTimeout() や show() などで、操作を試みましたが、消すことができませんでした
初歩的な質問だと思いますが、なにとぞご教授願います

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

setTimeoutを使うやり方があります。

html

1<!DOCTYPE html> 2<html> 3 <head> 4 <base target="_top"> 5 <script> 6 // Prevent forms from submitting. 7 function preventFormSubmit() { 8 var forms = document.querySelectorAll('form'); 9 for (var i = 0; i < forms.length; i++) { 10 forms[i].addEventListener('submit', function(event) { 11 event.preventDefault(); 12 }); 13 } 14 } 15 window.addEventListener('load', preventFormSubmit); 16 17 function handleFormSubmit(formObject) { 18 var elemInputFile = document.getElementById('inputFile'); 19 if (elemInputFile.value === '') { 20 alert("ファイルが選択されていません"); 21 return; 22 } 23 google.script.run.withSuccessHandler(updateUrl).processForm(formObject); 24 } 25 function updateUrl(url) { 26 var div = document.getElementById('output'); 27 var elemInputFile = document.getElementById('inputFile'); 28 var defaultValue = elemInputFile.defaultValue; 29 div.innerHTML = '<a href="' + url + '">Got it!</a>'; 30 setTimeout(() => { 31 div.innerHTML = ''; 32 elemInputFile.value = defaultValue; 33 }, 2000); 34 } 35 </script> 36 </head> 37 <body> 38 <form id="myForm" onsubmit="handleFormSubmit(this)"> 39 <input id="inputFile" name="myFile" type="file" /> 40 <input type="submit" value="Submit" /> 41 </form> 42 <div id="output"></div> 43 </body> 44</html>

 


追加/変更した部分

  • inputにidを付与

html

1 <input id="inputFile" name="myFile" type="file" />

 

  • submit時にファイルが選択されていないときはダイアログを表示してページ遷移しないようにする。

js

1 function handleFormSubmit(formObject) { 2 var elemInputFile = document.getElementById('inputFile'); 3 if (elemInputFile.value === '') { 4 alert("ファイルが選択されていません"); 5 return; 6 } 7 google.script.run.withSuccessHandler(updateUrl).processForm(formObject); 8 }

 

  • 「最初にファイル添付したファイル名も一緒に消えてくれるとなお嬉しい」

→意図としては、文字を消すことよりも、"ファイルが選択されていない状態の表示に戻す"ということだろうから、ファイル未選択状態の時の値(defaultValue)を取得しておいて、Got itを非表示にするタイミングと同時に戻すようにする。

js

1 function updateUrl(url) { 2 var div = document.getElementById('output'); 3 var elemInputFile = document.getElementById('inputFile'); 4 var defaultValue = elemInputFile.defaultValue; 5 div.innerHTML = '<a href="' + url + '">Got it!</a>'; 6 setTimeout(()=>{ 7 div.innerHTML = ''; 8 elemInputFile.value = defaultValue; 9 }, 2000) 10 }

投稿2022/07/30 09:36

編集2022/07/30 10:40
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

swing

2022/07/30 12:17

早々にご教授頂き、ありがとうございます! 頂きましたコードをコピペして、希望どおりの動作を確認しました また、ファイル名も一緒に消えてほしい意図をくみ取り、コードに反映して頂き、深謝いたします まだ、追加/変更して頂いた内容を理解できておりませんので、一つづつ元のコードと見比べながら調べていきます どうもありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問