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

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

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

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

Q&A

2回答

1554閲覧

GAS:スプレッドシート チェックボックス判定後、別シートへコピー

spazio431

総合スコア4

Google Apps Script

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

0グッド

0クリップ

投稿2020/02/28 03:09

前提・実現したいこと

GASについての質問です。
スプレッドシートのシートAはアドレス帳です。
アドレス帳にチェックボックスを作り、チェックボックスをONにしたものだけ
同一スプレッドシートのシートBに必要情報をコピーしたいです。

該当のソースコード

var CHECKBOX_COLUMN = 5
var CHECKBOX_COUNT = 50
function changeEvent() {
var ss = SpreadsheetApp.getActiveSheet();
var sheet = ss.getSheetByName(‘アドレス帳元データ’);
var activeCell = sheet.getActiveCell();
if (activeCell.getColumn() == CHECKBOX_COLUMN){
checkBoxEvent(sheet);
}
}

function checkBoxEvent(sheet) {
var sheet_copyFrom = ss_copyFrom.getSheetByName('アドレス帳元データ')
var sheet_copyTo = ss_copyTo.getSheetByName(‘アポイント作業用’)
var Fromrows = sheet_copyFrom.getRange(3, CHECKBOX_COLUMN, CHECKBOX_COUNT, 1).getValues();
var Torows = sheet_copyTo.getRange(11,4 - 11,9).getValues();

copyFields(sheet);
for (Fromrows i = 3; i < rows.length; i++) {
if (Fromrows[i][5] == true) {
var copyFromValue = sheet_copyFrom.getRange(i,4 - i,9)getValues();
var copyToValue = sheet_copyTo.getRange()
sheet_copyTo.getRange(11,4 - 11,9 + 1).setValues(copyValue);
}
}
}

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

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

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

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

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

guest

回答2

0

チェックを付けたタイミングでコピーする。ただしチェックを外して付けた場合、同じ行が何度でもコピーされる(なので、queryを使ったほうがよい)

javascript

1const onEdit = e => { 2 const srcSheetName = "アドレス帳元データ"; 3 const dstSheetName = "アポイント作業用"; 4 if(e.value !== "TRUE") return; 5 const sheet = e.range.getSheet(); 6 if(sheet.getName() !== srcSheetName) return; 7 const r = e.range.getRow(); 8 const row = ["","",""].concat(sheet.getRange(r, 4, 1, 5).getValues()[0]); // D 列から I 列 ? 9 sheet.getParent().getSheetByName(dstSheetName).appendRow(row); 10}

このレベルの質問からやりたいことが理解できる回答者いないでしょ。以下を想定。

  • "アドレス帳元データ" の E 列に チェックボックスがあり、おそらく 3 行目から 20 行目までにアドレスがかいてある。コピーしたいのは、このシートの D 列から I 列。
  • "アポイント作業用" が、コピー先で、11 行目以降の D 列から I 列にコピーしたい。

やりたいことが文章で説明できてないので teratail のようなオンラインの場でやりたいことをプログラムにすることに辿りつくのは困難です。スプレッドシートを共有できて、いい感じでおねがいします、が通じる人を探したほうがいいです。

投稿2020/02/28 13:53

編集2020/02/28 13:54
papinianus

総合スコア12705

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

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

0

queryをimportrangeを使って別スプレッドシートのデータをフィルタリングする - GoogleSpreadSheet

こういう方法ではダメなんでしょうか。

(コードを自力でメンテするのは不可能だという想定での回答です)

投稿2020/02/28 13:25

papinianus

総合スコア12705

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問