• 締切済み

google apps scriptの終了のさせ方

golabの回答

  • golab
  • ベストアンサー率50% (1/2)
回答No.2

終了させたい箇所にreturn文を記述すれば良いです。 この事は、google apps scriptに限らずjavascriptのルールでもあります。 (例) function sampleFunc() { var ynAns = Browser.msgBox("転記しますか?",Browser.Buttons.YES_NO); if (ynAns=="no") { Browser.msgBox("終了する"); /* 必要であれば終了処理 */ return; } else { Browser.msgBox("続行します。"); } /* 続行する処理 */ return }

関連するQ&A

  • Googleクラウドスクリプティングでメール

    JavaScriptもGoogleApsも全くの初心者なのですが、業務で必要なため勉強し始めました。一人では行き詰ってしまいまして、どうかお力をお貸しください。 GoogleドキュメントのスプレッドシートのセルをGmailで送信しようとしています。結果は選択したセル範囲ではなく、"Sheet"という文字列がメールされてしまいます。どこがおかしいでしょうか。。 function myFunction() { var mySheet = SpreadsheetApp.getActiveSheet(); mySheet.getRange("D2:D6"); var mySubject = "件名"; var myBody = mySheet; var mailto = "メールアドレス"; GmailApp.sendEmail(mailto, mySubject, myBody ); } ※Googleクラウドスクリプティングのカテゴリがなくこちらで質問させていただきましたが、検討違いでしたら申し訳ございません。

  • JavaScript、;がない?

    Google Apps Scriptでプログラムを書きました。 すると、「ステートメントの前に;がありまあせん。(行6、ファイル「コード」)」と表示されます。 プログラムは、以下のとおりで、6行目とは、「If」文のところです。 しかし、私には、そのようなエラーが出ている理由が分からないのですが、どなかたお教えください。 function myFunction() { var s = SpreadsheetApp.GetActiveSheet(); var l = s.getMaxRows(); for (var i = 1; i < l; i = i + 1) { for (var j = 2; j <= l; j = j + 1) { If (s.getRange(i, 1).getValue == s.getRange(j, 1).getValue && s.getRange(i, 2).getValue == s.getRange(j, 2).getValue) { s.getRange(j, 1: j, 2).setBackgroundColor('aqua'); } } } }

  • Google Apps Scriptのシート名選択

    初めまして。 3日前位からGoogleスプレッドシートのScriptを勉強し始めて 「シート1のA1セルが編集されたらB1に自動で現在時刻を打刻する」 というスクリプトを作っていました。 サイトを見ながらなんとかA1判定からB1自動打刻までいけたのですが シート名がうまく指定出来ていないみたいで シート1だけでなく【シート2】のA1 を編集してもシート1のB1に打刻されてしまいます。 スプレッドシートは極められたのでその先へ行きたいのですが 最初はやっぱり難しくて苦悩しています; 色々間違えてるかもしれませんが、ぜひ身に付けてみたいので 初めの一歩だけご教授をどうかよろしくお願いします。 function insertLastUpdated() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('シート1'); // rangeXとYにカーソル座標を代入 var rangeX = sheet.getActiveCell().getColumn(); var rangeY = sheet.getActiveCell().getRow(); // シートの座標1,1(A1)が編集されたらB1に現在時刻を打刻(トリガーを編集時に指定) if(rangeX==1&&rangeY==1){ sheet.getRange("B1").setValue(new Date()); } }

  • Google スプレッドシートのフィルタについて

    フィルタを使用し、非表示の状態にしたセルに対して[setValue(s)]を行いたいです。 しかし、日付を入力した場合、フィルタを解除すると入力ができていません。 setValue自体はログを見るとエラーは発生せず成功しています。 どうすればよろしいのでしょうか。 以下イメージです。 --------------------------------- スプレッドシート A  B  C  D No. ID 1  1 1  2 1  3 2  4 2  5 2  6 3  7 3  8 3  9 ---------------------------------- No.が1を表示するようにフィルタをかける A  B  C  D No. ID 1  1 1  2 1  3 ---------------------------------- 実行するコード IDが7の行のC列に日付、D列に[TEST]を入力 function myFunction() { var sh = SpreadsheetApp.getActive().getSheetByName( sheetname ); var id = sh.getRange("B:B").getValues(); for(var i=0; i<id.length; i++){ if(id[i] == 7){ sh.getRange("C" + (i + 1)).setValue(new Date()); sh.getRange("D" + (i + 1)).setValue("TEST"); } } } ----------------------------------- フィルタを解除 A  B  C  D No. ID 1  1 1  2 1  3 2  4 2  5 2  6 3  7    TEST 3  8 3  9

  • スプレッドシートの自動更新日付ずれる

    スプレッドシートである管理表を作成して、何かしたらのセルを編集するとB列の更新日に自動で現在日時が反映されるスクリプト組んで使用していました。 ところが、いつからか管理表を更新するとB列は自動更新されるのですが、現在日時より16時間前の日付で表示されるようになってしまいました。 例えば実際にセル更新した日時が2024/05/29 16:45だとすると、B列のセルには2024/05/29 00:45と表示されるようになります。 スクリプトは設定変更していないため、原因がわかりません。 実際に設定しているスクリプト構文を記載しますので、原因等わかれば教えてほしいです。 function insertLastUpdated() { var ss = SpreadsheetApp.getActiveSheet(); var currentRow = ss.getActiveCell().getRow(); var currentCell = ss.getActiveCell().getValue(); var updateRange = ss.getRange('B' + currentRow) //更新日をいれる列をstringで指定。この場合はB列 Logger.log(updateRange); //更新日の記入 if(currentRow>1){ if(currentCell) { updateRange.setValue(new Date()); } } }

  • GoogleAppsScriptのトリガ

    よろしくお願いします。 スプレッドシートにWEBクエリで任意のサイトから数値をコピーし、 独自計算してセル("D2:D6")に値を出しています。 これをメールグループにスクリプトトリガで毎日定時に送信したいのですが、 最初は意図通り数値が送信されるのですが、次回から #VALUE! #VALUE! #VALUE! #VALUE! #VALUE! と出てしまいます。 自分の力量を超えておりまして、どうかお知恵をお貸しください。 function myFunction() { var mySubject = "件名"; var mySheet = SpreadsheetApp.getActiveSheet(); var myrange = mySheet.getRange("D2:D6"); var myBody = myrange.getValues(); var context = myBody.join("\n"); Logger.log(context); var myGroup = ContactsApp.getContactGroup("グループ"); var myContacts = myGroup.getContacts(); var myCount = myContacts.length; for (i = 0; i < myCount; i++) { var mailBCC = myContacts[i].getEmails()[0].getAddress(); GmailApp.sendEmail(mailBCC, mySubject, context ); } } ※Google Apps Scriptのカテゴリがなくこちらで質問させていただきましたが、検討違いでしたら申し訳ございません。

  • gasカードの変数をhtmlに反映させるには?

    スプレッドシートから引っ張ってきた情報を、htmlメールに反映させたいと考えています。 以下で書いてみたのですが、HTMIメールではmessageがそのままになってしまいます。 gasで書いた内容を反映させたいのですが、どうしたらいいのでしょうか? アドバイスお願いします。 function myFunction() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('作業用'); let row = sheet.getLastRow(); //店名 let name = sheet.getRange('c' + row).getValue(); //①商品 let name5= sheet.getRange('h' + row).getValue(); //個数 let name7= sheet.getRange('j' + row).getValue(); //受信日 let name101 = sheet.getRange('a' + row).getValue(); //了解者 let name100 = sheet.getRange('w' + row).getValue(); //メール.htmlを取得 var html = HtmlService.createHtmlOutputFromFile("メール").getContent(); function doGet() { var template = HtmlService.createTemplateFromFile('メール'); template.message = "\n" +        "了解者:" + name100 + "\n" +        "商品:" + name5 + " " + name6 + " " + name7 + "個" + "\n" +        "店名:" + name + "\n" +        "本メールを了解書としてご利用ください。:" + "\n" +        "ご依頼送信日時:" + name101 + "\n"; return template.evaluate(); } var recipient = sheet.getRange('b' + row).getValue();//送信先のアドレス var subject = "了解書"; var body = '了解書' + "\n" + "\n" + "了解者:" + name100 + "\n" + "商品:" + name5 + " " + name6 + " " + name7 + "冊" + "\n" + "店名:" + name + "\n" + "\n" + "本メールを了解書としてご利用ください。:" + "\n" + "ご依頼送信日時:" + name101 + "\n"; var options = { "name": "test", //送信元の名前を指定 "htmlBody": html //メール本文をhtmlファイルに指定 }; //メール送信 if (sheet.getRange('w' + row).getValue() === '') { }else if (!sheet.getRange('x' + row).getValue() === '完了') { return false; } else {  GmailApp.sendEmail(recipient, subject, body, options);  } } <!DOCTYPE html> <html> <head> <base target="_top"> </head>  <body> <h1>了解書</h1> <p>拝啓 格別のお引立てを賜り厚くお礼申し上げます。<br> 下記の商品の返品を承ります。</p>   <h3><?=message?></h3></p>  </body> </html>

  • Google apps scriptについて

    Googleドライブのスプレッドシートで作成したスケジュールをGoogleカレンダーに反映するGoogle apps scriptを作成したいと思っています。 下記のサイトが、ほぼイメージに近いのですが、コチラのコードでは、時間の指定ができません。 ○時から○時までという時間の指定をするには、どのようにコードを追加すればよろしいですか? http://pc.nikkeibp.co.jp/article/column/20140210/1120685/?P=6 以上よろしくお願いします。

  • Google Apps Scriptについて

    Google Apps Scriptを習得したいと思います。2冊ほど本を買ったり、ネットを参考に勉強しています。何とかものにしたいと思っていますが、基本Java Scriptと同じだと言う事を聞いたのですが、『3ステップでしっかり学ぶ JavaScript入門』とかをきっちりとやれば、それなりに理解は進むのでしょうか?それとも、両者は似て否なるものであって、役に立たないのでしょうか? 基本をしっかり身につけて、応用力を付け実践力を付けたいと思っています。よろしくお願いします。

  • Google Apps Scriptについて

    Google Apps Scriptについては全くの初心者です。どなたか知恵をお借りしたいです。 accessを使い業務システムを作っているのですが、これまでgoocalproxyというサービスを使い、新規受注を入力すれば、その内容をgmailに飛ばし、自動でグーグルカレンダーに登録させてました。このgoocalproxyが数日前から機能しなくなり、色々調べた結果Google Apps Scriptを使って登録する方法を見つけたのですが、全くの初心者の為、ネットで参考にしたサンプルのコピペしかできず、下記のようなコードを使用しております。 function setCalLab(){ //var dstr = "本日の予定"; //var label = GmailApp.createLabel(dstr); var thds = GmailApp.getInboxThreads(); var calName = "本日の予定"; var cals = CalendarApp.getCalendarsByName(calName); for(var n in thds){ var thd = thds[n]; var subject = thd.getFirstMessageSubject(); var msgs = thd.getMessages(); if (subject.indexOf("本日の予定",0) != -1){ //label.addToThread(thd); //for(var m in msgs){ var msg = msgs[0]; var body = msg.getPlainBody(); var str = msg.getSubject(); var res = str.match(/\d+/g); var cal = cals[0]; var d1 = new Date(); var yy = d1.getFullYear(); var dd = new Date(yy,res[0]-1,res[1]); cal.createAllDayEvent(str,dd,{description:body}); //} GmailApp.moveThreadToArchive(thd); } } } これですと、カレンダーに自動登録は出来るのですが、終日の予定になってしまいます。 やりたい事は、gmail宛てに予定の件名、日付、開始時間、終了時間を送りそれを自動でグーグルカレンダーに開始時間から終了時間までの予定で反映させたいと思っています。 別のサイトで、 function createEvent(){ var calendar = CalendarApp.getCalendarById('xxxxxxxxxx@group.calendar.google.com'); calendar.createEvent('歯医者', new Date('2012/3/12 18:00:00'), new Date('2012/3/12 20:00:00')); } 時間指定のほかに、予定の概要、場所情報を設定することもできる。 function createEvent2(){ var calendar = CalendarApp.getCalendarById('xxxxxxxxxx@group.calendar.google.com'); calendar.createEvent('歯医者', new Date('2012/3/12 18:00:00'), new Date('2012/3/12 20:00:00'), {description: '概要', location: '◯◯病院'} ); } というような情報も見つけたのですが、幾分全くの初心者の為、これをどうすれば思い通りのコードになるのかわかりません。 どなたかご教授お願い致します。