🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Google Apps Script

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

Q&A

解決済

1回答

1887閲覧

GAS メール送信の際チェックボックスを自動でTRUEにしたい

yyyuuukkkiii

総合スコア1

Google Apps Script

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

0グッド

0クリップ

投稿2021/02/12 02:36

前提・実現したいこと

GASでメールの自動送信を書いています。

シート1に、シート2の中からメール送信欄にチェックがついていないものを抽出しています。(以下参照)
=QUERY('シート2'!A2:Z,"select H,D,E,N where E != '' and N = FALSE")

実行と同時に、シート2のN列にあるチェックボックスにチェックを入れることで、メール送信済みと判断できるようにしたいのですが可能でしょうか?

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

エラーメッセージ

該当のソースコード

function sendMail(){

var ash = SpreadsheetApp.getActiveSpreadsheet()
var sheet = ash.getSheetByName("シート1")
var sheet2 = ash.getSheetByName("シート2")
const lastRow = sheet.getLastRow();
const myCell = sheet.getActiveCell(); //アクティブセルを取得
const row = myCell.getRow();

const DOC_URL = 'URL入れる';
const doc = DocumentApp.openByUrl(DOC_URL);
const docText = doc.getBody().getText();

const subject = 'test';

for(let i = 2; i <= lastRow; i++){

const namae = sheet.getRange(i, 1).getValue(); 
const kigyoumei = sheet.getRange(i, 2).getValue();
const address = sheet.getRange(i, 3).getValue();

const body = docText
.replace('{名前}',namae)

var tempu = DriveApp.getFilesByName('pdfの名前').next()

GmailApp.sendEmail(address, subject, body, {
name: '題名',
cc: 'CC',
attachments: [tempu]});
}

}

試したこと

sheet2.getRange(row,14).check();

等試しましたがうまくいきませんでした。

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

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

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

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

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

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

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

guest

回答1

0

ベストアンサー

直接的には難しいと思います。

  • シート1 が他に役割を持っているかにもよりますが、E 列が "" で N 列が False 程度であれば、シート1 は不要です。
    この前提でシート2のみを参照して実行することができれば、チェックを入れることは可能です。
    (単に true のデータを保存していくだけです)
  • 現状シート1は Query でフィルタされた行が見えているので、シート1 で仮に 10 行目であるときにそれに対応する行がシート2で 11 行目なのか 200 行目なのか 1000 行目なのか皆目検討がつかないです。なので、直接的には難しいです。
    仮に、他の列(H や D)の値が重複し得ないのであれば、シート2からその値を探してくることで、チェックを付けることは可能だと思いますが、そのようなことをするくらいなら最初からシート2だけでスクリプトを実行することで解消したほうが良いと思います。

なので、シート1 の役割と単にフィルタすること以上に、どのようなメリットがあるのかを追記してくだされば、よりよい回答が得られると思います。

投稿2021/02/12 08:32

papinianus

総合スコア12705

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

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

yyyuuukkkiii

2021/02/22 01:31

ありがとうございます。やはり直接は難しいのですね。 現状手動で書き換えるのが一番早そうなので一旦手動で行こうと思います。 ご丁寧な対応ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問