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

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

新規登録して質問してみよう
ただいま回答率
85.49%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

1135閲覧

googleで作ったスプリクトエディタが変に作動するようになった

aromaroza

総合スコア13

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/11/08 04:23

前提・実現したいこと

ここに質問の内容を詳しく書いてください。
googleフォームを使って申込みを作成し、
スプレッドシートを作成した
それにスクリプトエディタを作成
問題なく申込み、返信ができていたのに、
一人方からの申し込みができないとメッセージが届く

とりあえず、メールで申し込みを受け
試しに私の申込みを作成
うまく動く
それ以降の申込みもうまく行っているようにみえていたが、

その
私の練習で申し込みした以降の申し込みすべてが
「うまくいかない」と言って来られた方に届くようになった。

理由もわからず困っている

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

どなたが申し込んでも 申し込みすべてが 「うまくいかない」と言って来られた方に その方の申込みで届くようになった

該当のソースコード

function autoreply() { var title = "医療・魂のドテラ"; var body = "お申込みありがとうございます。\n" +"【セミナー名】医療と魂のドテラ\n" +"【日時】 2018年12月12日(水) 9:30開場\n" +"      10:00~16:00\n" +"【会場】 AP大阪大阪東梅田\n" +"【住所】 大阪市北区堂山町3−3 日本生命梅田ビル\n" +"【道順】 地下街泉の広場から「M-10」階段を昇り、右側へ昇り、そのまま道沿いです\n" +"【参加費】2,000円\n" +"【お問い合わせ先】 東/aroma.roza.doterra@gmail.com\n" +"\n" +"【昼食について】 各自でご準備されるか近隣をご利用ください\n" +"      \n" +"下記の通りお申込みを受け付けました\n\n" + "------------------------------------------------------------\n" ; var footer = "------------------------------------------------------------\n\n" + "お問い合わせメール:aroma.roza.doterra@gmail.com" + "ありがとうございました"; var name = '氏名'; var mail = 'メールアドレス'; var address = ""; var sheet = SpreadsheetApp.getActiveSheet(); var rows = sheet.getLastRow(); var cols = sheet.getLastColumn(); var rg = sheet.getDataRange(); Logger.log("rows="+rows+" cols="+cols); for (var i = 1; i <= cols; i++ ) { var col_name = rg.getCell(1, i).getValue(); var col_value = rg.getCell(rows, i).getValue(); body += "■"+col_name+"\n"; body += col_value + "\n\n"; if ( col_name === name ) { body = col_value+" 様\n\n"+body; } if ( col_name === mail ) { address = col_value; } } body += footer; GmailApp.sendEmail(address,title,body); }

試したこと

動き出してからはソースをいじっていないのですが、
再度確認。

毎回届くという方に
メールで私に返信してもらった

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

申込みがあるとメールに届くというシステムは使っていない。
そのうまくいかなかった方の申込みがこちらでは確認がとれない。
でもそのフォームは返信されていて、
どなたかが申し込むと
その時間で「うまくできていない」その方に返信用メールが届く。
もちろん
申し込みした方には普通に返信用が届いています。

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

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

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

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

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

papinianus

2018/11/08 05:00

タグのSQLは関係ないのでは
guest

回答2

0

ベストアンサー

この情報ゼロの状態から対処する方法は2つ

  1. 全く別のちゃんと動作するものを作る
  2. プログラムの動きを追跡してデータ異常がないか切り分けていく

1.の方法。

このコードをどこから入手したか分かりませんが作りがダメ。
コードが下手とかいう以前に、「送信時」のトリガーを設定している(のだろう)ですから、送信されていくるデータを使うべき。イベントオブジェクトのnamedValuesに入力値は入っている。
<<確かに↓のコードだと、スプレッドシートの表示順(A列からの順序)と違う順序でメール本文が作られるが、そこにこだわる価値がないし、こだわりたくても、valuesというのがあるので、それでやればできる>>
↓のmessageをforでごちゃごちゃやっているののかわりにおけば代替になる

javascript

1function onSubmit(e) { 2 const inputs = e.namedValues; 3 const message = Object.keys(inputs).map(function(key) { return key + ":" + inputs[key].join(", ");}).join("\n"); 4 MailApp.sendEmail(inputs["メールアドレス"][0], "title", message); 5}

2.の方法

下記のようなことをすれば、プログラムがどんなデータを入手しているかが分かるので、これによってrowsやcolsが正しいかとか、その送られる人の不正なデータがないかとか、が検証できます。
ログの見方が分からない可能性が高いのですが…(表示メニューのログから見れます…)

javascript

1function checkData() { 2 const full = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); 3 const tail = full[full.length - 1]; 4 Logger.log(full); 5 Logger.log(tail); 6}

投稿2018/11/08 06:41

papinianus

総合スコア12705

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

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

papinianus

2018/11/08 06:43

// 最近こんなんばっかやな たぶんどっちも無理だよ…ちゃんと解決としてマークしてね… こういうことを考えて、「分かる人に見てもらうしかない」というのが先の回答なんです。テキトーに、はいはい見るしかないよムリムリ、って言っているんじゃないの…
aromaroza

2018/11/12 09:13

ありがとうございます。 昨日までに何度もやり直して、 ようやく全部削除して、 やり直してみました。 ソースはもらったものでよくわかっていません。。 今申し込があるので、 どこまでいじるっていいのかもわからず。 今回のはこのままにしています。 とりあえず、エクセルでお名前入ってくるので・・・。 次回は 教えて頂いたことを踏まえて作り直します。 聞くところもなくて、 聞き方もよくわからず、 どう答えていいのかわからに答えで申し訳ありませんでした。 ご丁寧に教えていただきありがとうございました。
guest

0

記載のとおりの経過をしているのであれば、データ異常なのでそのものを見なければ直すのは難しいです。

想像ですが、練習時にスプレッドシートにコピペなどをして非表示もしくは空白行を挟んだ下の方に、その人の申し込みデータがあるとか、フォームでは書かれないはずの右のほうの列にメールアドレス列があるとか、でしょうか。

投稿2018/11/08 05:11

papinianus

総合スコア12705

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

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

aromaroza

2018/11/08 05:13

ありがとうございます。 私もそこを考えて シートを見てみたんですが。 何もないんです。 それに シートを触っていないので、どういうことになったのかわかりません。
papinianus

2018/11/08 05:19 編集

だからこそ見ないと直せないと書いたのです。 コードには触れていないとのことで、正常動作時から変わっていないコードを見ても情報量がゼロです。 念の為、コードも拝見しておりましたがこのコードはおっしゃる通りの動きをしそうです。 わかる人に見てもらうほかないです
aromaroza

2018/11/08 06:56

お返事ありがとうございます。 よくわからないのでお聞きしたのですが、 見当違いのことを言ってたら申し訳ないです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問