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

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

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

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

1回答

941閲覧

GASが違うシートのfunctionをひっぱってきてしまう

GAS_202009

総合スコア1

Google Apps Script

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

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2021/03/19 04:03

編集2021/03/19 04:55

一つのシートのスクリプトのファイル内にコピーして3つ「function pushSendButton」
「function pushSendButton1」「function pushSendButton2」を作っています。
エラーコードは出ないのですが、「function pushSendButton(無印)」を実行すると、
「同名2」でアクティブにしているシートの内容をひっぱってきてしまいます。

アクティブにしているシートは、「PCR1」「PCR1-sashikomi」でこれも1~3まであります。
同名なのが悪いのでしょうか。
ネットで公開されていた下記のスクリプトをコピペして必要なところだけ変えたド素人なので、
そもそもひとつのスプレッドシートには1つしかこういった機能を設定できないものなのか、
シート名やfunction名が出ない物なのかわかりません。
ご教授どうぞよろしくお願い致します。

--------------------------------------
♯ function pushSendButton() {
/* スプレッドシートのシートを取得と準備 */
var ss = SpreadsheetApp.getActiveSpreadsheet(); //このスプレッドシート
var mainSheet = ss.getSheetByName("PCR1"); //メインシート
var skSheet = ss.getSheetByName("PCR1-sashikomi"); //差込シート
var skEndRow = skSheet.getDataRange().getLastRow(); //シートの使用範囲のうち最終行を取得
var count = skEndRow - 1;
// 送信確認
var select = Browser.msgBox("メールを一括送信します!", count + "件のメールを送信しますが、よろしいですか?", Browser.Buttons.OK_CANCEL);
if (select == 'ok') {
sendEmail();
}
if (select == 'cancel') {
Browser.msgBox("送信をキャンセルしました");
}
}

♯♯ function sendEmail() {
/* スプレッドシートのシートを取得と準備 */
var ss = SpreadsheetApp.getActiveSpreadsheet(); // このファイル
var mainSheet = ss.getSheetByName("PCR1"); // メインシート
var skSheet = ss.getSheetByName("PCR1-sashikomi"); // 差込シート
var skEndRow = skSheet.getDataRange().getLastRow(); // シートの使用範囲のうち最終行を取得
var attachedFileId = mainSheet.getRange(7, 2).getValue(); // 添付ファイルのID

♯♯♯ /* メール基本データの設定 */
var strFrom = mainSheet.getRange(3, 2).getValue(); // fromメールアドレス
var strSender = mainSheet.getRange(4, 2).getValue(); // 差出人の名前
var strSubject = mainSheet.getRange(5, 2).getValue(); // メールタイトル
var strBody = mainSheet.getRange(6, 2).getValue(); // 本文
if (attachedFileId) {
var attachedFile = DriveApp.getFileById(attachedFileId); // 添付ファイル
}

♯♯♯♯ var strSubjectIns = ""; // 差込後のメールタイトル
var strBodyIns = ""; // 差込後のメール本文

♯♯♯♯♯ for (var i = 2; i <= skEndRow; i++) {
// 差込シートの取得
var strToEmail = skSheet.getRange(i, 1).getValue(); // 送信先メール
var strCc = skSheet.getRange(i, 2).getValue(); // CC
var strBcc = skSheet.getRange(i, 3).getValue(); // BCC
var sk1 = skSheet.getRange(i, 4).getValue(); // $1
var sk2 = skSheet.getRange(i, 5).getValue(); // $2
var sk3 = skSheet.getRange(i, 6).getValue(); // $3
var sk4 = skSheet.getRange(i, 7).getValue(); // $4
var sk5 = skSheet.getRange(i, 8).getValue(); // $5
var sk6 = skSheet.getRange(i, 9).getValue(); // $6

♯♯♯♯♯♯ // 差込を反映
strSubjectIns = strSubject.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //タイトル
strBodyIns = strBody.replace(/$1/g, sk1).replace(/$2/g, sk2).replace(/$3/g, sk3).replace(/$4/g, sk4).replace(/$5/g, sk5).replace(/$6/g, sk6); //本文

♯♯♯♯♯♯♯ /* メール送信 */
if (attachedFileId) {
// 添付ファイル有りの場合
GmailApp.sendEmail(
strToEmail, //toアドレス
strSubjectIns, //メールタイトル
strBodyIns, //本文
{
cc: strCc, //ccアドレス
bcc: strBcc, //bccアドレス
from: strFrom, //fromアドレス
name: strSender, //差出人
attachments: attachedFile //添付ファイル
}
);
} else {
// 添付ファイル無しの場合
GmailApp.sendEmail(
strToEmail, //toアドレス
strSubjectIns, //メールタイトル
strBodyIns, //本文
{
cc: strCc, //ccアドレス
bcc: strBcc, //bccアドレス
from: strFrom, //fromアドレス
name: strSender, //差出人
}
);
}
}
Browser.msgBox("送信が完了しました。");
}

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2021/03/19 04:46

コピペ元よりご自身で書かれたコードの方を見たいです.同名1と2を作る際に変数の書き換えがうまくいっていないからかもしれませんので.あと,コードはそのままだと確認が大変なため,マークダウン機能を使って見やすく表示してください.
退会済みユーザー

退会済みユーザー

2021/03/19 04:59

ヘルプは読まれましたか?マークダウン機能とはコードの前後に```を入れて囲うことです.あとよく見たらタグが間違っています.JavaとJavascriptは全くの別物です.
dodox86

2021/03/19 08:42

[2021/03/19 13:55]の質問の編集「1マークダウン方式にしたらよいとアドバイス頂いたので#を付けてみました。」を読んで: マークダウンとは、そうではないです。(なぜ、独自の解釈に走るのか) https://teratail.com/help/question-tips#questionTips3-5-1 https://teratail.com/questions/238564 あたりを参考にしてください。あと、 > ネットで公開されていた下記のスクリプトをコピペして必要なところだけ変えたド素人なので、 コピペするだけでダメです。元のコードは理解されていないということでしょうか。修正するにしても理解していないと、回答をいただいてもそれもコピペで終わります。
guest

回答1

0

時間の経過した質問ですが、GASの未回答を減らしたいため回答します。

基本的には、関数もシートも全く同名でない限りは問題ありません。
ただ紛らわしくて間違える可能性はあるので、できれば識別しやすいよう名前はある程度変えた方が無難です。

スプレッドシートには1つしかこういった機能を設定できないものなのか、

特にそういった制限はありません。

おそらくは、質問者さんの設定側の間違いだと思われます。

有料のサポートサイトではないので、厳しい回答の方も多いですが、
質問者さんのコードがないと何を間違えているか回答が難しくなるので、
できればどこまでできているのか提示いただくのが、このサイトでは最良だと思います。

投稿2021/05/26 04:08

Tatsunosuke

総合スコア599

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問