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

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

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

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

Q&A

解決済

1回答

4807閲覧

GASの複数関数における実行ボタンの設定について

tasuku_0615

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2023/02/05 05:17

実現したいこと

  • GASの実行ボタンを設置して、自動で複数人にメールが送れるようにしたい。

上記にあたり、2つのfunction(関数)を まとめた関数を作りたい。

前提

GASを使ってスプレッドシートから、メールを複数人に一斉に送るものを開発しています。
スプレッドシートの実行ボタンからメールを送付したいのですが、
複数の関数が実行できないため、一つの関数にまとめたいと考えています。

onclick()の関数に「main」「sendMailToAll」の関数をまとめたいのですが
エラーが発生しまいます。原因について教えていただければ幸いです。

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

構文エラー: SyntaxError: Unexpected token ';' 行: 5 ファイル: コード.gs

該当のソースコード

// この関数を「ボタン操作時」に登録 function onclick(){ // // @ts-ignore function main(); function sendMailToAll(); } function main() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName('アドレス帳'); const firstRow = 4; //データの開始行(=今回は4行目) const mailCol = 3; //メールアドレスの列(=今回はC列) var rowLength = sheet.getLastRow() - (firstRow - 1); var mailaddressList = []; // メールアドレスリスト取得 for(let i=0; i < rowLength; i++){ let address = sheet.getRange(firstRow + i, mailCol).getValue(); mailaddressList.push(address); } // 宛先ごとにメール作成、送信 mailaddressList.forEach(address => { // メールアドレスがある場合、実行 if(address != ''){ sendMailToAll(address); } }); } function sendMailToAll(address) { const subject = '【ご連絡】本日のシフト状況について'; // メールの件名 const body = ` 社員の皆さま 本日のシフト状況のお知らせです。 下記シートをご覧ください。 ************************* 不明点がございましたら、下記までご連絡ください。 〇〇店 社内担当 〇〇 内線:000-000-0000 `; GmailApp.sendEmail(address, subject, body); }

試したこと

構文エラー: SyntaxError: Unexpected token ';' 行: 5 ファイル: コード.gs
なので、";"が間違いかと思い、色々試行錯誤してみたのですがうまく行きません・・・

コードを二つに分けない方法も検討したいのですが、
上記ご教示いただければ幸いです。

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

記述が間違っていたので修正してみてください〜。

javascript

1function onclick(){ 2 3 main(); // functionの記述削除 4 // function sendMailToAll(); // 不要のため削除 5 6}

ということで、2つ関数をまとめる必要はなく、main()関数だけを、ユーザーにクリックさせるボタンに登録しておいたらいいと思います!


(コメント欄のご質問から追記)

もしよろしければ、なぜうまくいかなったのか、 解消した理由を教えていただけないでしょうか・・・・・?

基本的な文法間違いです。

① 関数を定義

javascript

1function myFunction() { 2 // 処理 3}
② 定義済みの関数を実行

javascript

1myFunction();
③ 全くもって存在しない書き方

javascript

1function myFunction();

質問者様は②の書き方をしないとならないのに、③という文法が間違っている書き方をしていたので、文法エラーが起きていました。

投稿2023/02/05 06:41

編集2023/02/07 14:22
Cocode

総合スコア2314

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

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

Cocode

2023/02/05 06:44

内容修正しました。
tasuku_0615

2023/02/07 13:54

cocode様 ありがとうございます!! 無事解決できました!! もしよろしければ、なぜうまくいかなったのか、 解消した理由を教えていただけないでしょうか・・・・・? 次回の参考にさせていただきたく、、、、
Cocode

2023/02/07 14:22

回答を更新して、追記しました〜
tasuku_0615

2023/02/07 14:43

ありがとうございます! 定義ずみの関数を実行する場合には「function」は不要なのですね・・・・・・ 理解できました!ご丁寧にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問