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

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

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

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

Q&A

解決済

1回答

1942閲覧

GASでカット&ペーストする方法

k.ham

総合スコア1

Google Apps Script

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

0グッド

1クリップ

投稿2021/11/15 09:57

前提・実現したいこと

最近GASを勉強し始めた初心者です。
次のことがわからなく行き詰ったので質問させて頂きました。

実現したいこと:GASでシート1のL列が「済」であれば、シート2の最終行にコピー&ペーストするというプログラム。
困っていること:シート1にあるコピー元の行の削除方法。

詳細:GASでシート1のL列が「済」であれば、シート2の最終行にコピー&ペーストするというプログラムを作っています。
https://teratail.com/questions/162909
上記の質問を見て(ほとんどコピーして)、シート2にシート1「済」の行を移動はできました。
ただ、コピーし終えたシート1の「済」データを削除する方法がわかりません…。

該当のソースコード

function syoukyaku_before(){
var sheet = SpreadsheetApp.getActiveSpreadsheet();
var tana = sheet.getSheetByName("シート2");
var a_mst = sheet.getSheetByName("シート1")

const inventory = a_mst.getDataRange().getValues()
.filter(function(e){return e[11] === '済'})
.map(function(e){
const columns = [0,1,2,3,4,5,6,7,8,9,10,11,12], row = [];
for (var i = 0; i < columns.length; i++) row.push(e[columns[i]]);
return row;
});

if (inventory.length) {
tana.getRange(tana.getLastRow()+1, 1, inventory.length, inventory[0].length).setValues(inventory);
}
}

試したこと

13行目のsetValuesをmoveToに変更すれば良いと思いましたが、エラーがでます。

Exception: The parameters (number[]) don't match the method signature for SpreadsheetApp.Range.moveTo.
syoukyaku_before @ 作業.gs:15

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

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

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

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

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

guest

回答1

0

ベストアンサー

変更を最小限にしたコードですが、
コピー後、L列が「済」となっている行を最終行から逆にたどって削除していけばよいのではないでしょうか。

function syoukyaku_before() { var sheet = SpreadsheetApp.getActiveSpreadsheet(); var tana = sheet.getSheetByName("シート2"); var a_mst = sheet.getSheetByName("シート1") const dataValues = a_mst.getDataRange().getValues(); const inventory = dataValues .filter(function (e) { return e[11] === '済' }) .map(function (e) { const columns = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], row = []; for (var i = 0; i < columns.length; i++) row.push(e[columns[i]]); return row; }); if (inventory.length) { tana.getRange(tana.getLastRow() + 1, 1, inventory.length, inventory[0].length).setValues(inventory); } // L列が「済」となっている行を最終行から逆にたどって削除 for (let i = dataValues.length; i > 0; i--) { if (dataValues[i-1][11] === '済') a_mst.deleteRow(i); } }

投稿2021/11/15 13:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

k.ham

2021/11/16 00:10 編集

// 投稿できてなかったと思って同じコメントを二回送信してしまったので、こちらを削除しました。
k.ham

2021/11/16 00:08

ありがとうございます! 頂いたコードで無事に解決しました。 コピーと削除は別々に考えないと駄目だったんですね…。 勉強になりました! また、 何かあれば宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問