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

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

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

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

Q&A

解決済

1回答

7168閲覧

特定の列に特定の文字列が入力されたら

nisioisn

総合スコア19

Google Apps Script

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

0グッド

2クリップ

投稿2016/11/05 09:19

グーグルスプレッドシートで、指定の列に特定の文字列が入力されたら、行をグレイアウト、指定のセルに現在時間を入力しコピーして最終行の1行上に貼り付けしてコピー元の削除と言う動作をさせたいのですが、コピーしえ貼り付けの動作が上手くいきません。

google

1function onEdit(s) { 2 var sheet = s.source.getActiveSheet(), 3 range = sheet.getDataRange(), 4 dataLength = range.getValues()[0].length, 5 lastR = sheet.getLastRow(), 6 row = s.range.getRow(), 7 col = s.range.getColumn(), 8 day = Utilities.formatDate(new Date(), "JST", "MM/dd"), 9 time = Utilities.formatDate(new Date(), "JST", "H:mm"), 10 copyRow = lastR - 1; 11 var st = 7; { 12 if (col !== st) { 13 return; 14 } 15switch (s.value) { 16 case Status.Finished: 17 sheet.getRange(row, 1, 1, 7).setFontColor(Color.Finished).setFontWeight("bold"); 18 sheet.getRange(row, 10, 1, 1).setValue([day] + '\n' + [time]), 19 sheet.getRange(row, 1, 1, dataLength).copyTo(sheet.getRnge(copyRow,1)), 20 sheet.insertRowsBefore(lastR,1), 21 sheet.deleteRow(row); 22 break; 23 24} 25} 26};

コードの順番を変えてテストしたところ、最終行の1行上に行追加とコピー元の削除はどうさしました。
皆様の御助力をお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

①Status、Colorオブジェクトが未定義。

②switch (s.value) { → switch (s.range.getValue()) {

③sheet.getRange(row, 1, 1, 7).setFontColor(Color.Finished).setFontWeight("bold");

→文末を「;」から「,」に直す

④sheet.getRange(row, 1, 1, dataLength).copyTo(sheet.getRnge(copyRow,1)),

→getRngeではなくてgetRange

以上を修正して下記のようにしました。これで7列目に「完了」を入力すると動くかと思います。

function onEdit(s) { var sheet = s.source.getActiveSheet(), range = sheet.getDataRange(), dataLength = range.getValues()[0].length, lastR = sheet.getLastRow(), row = s.range.getRow(), col = s.range.getColumn(), day = Utilities.formatDate(new Date(), "JST", "MM/dd"), time = Utilities.formatDate(new Date(), "JST", "H:mm"), copyRow = lastR - 1; var st = 7; { if (col !== st) { return; } var Status = { Finished: '完了', }; var Color = { Finished: '#ead1dc', }; switch (s.range.getValue()) { case Status.Finished: sheet.getRange(row, 1, 1, 7).setFontColor(Color.Finished).setFontWeight("bold"), sheet.getRange(row, 10, 1, 1).setValue([day] + '\n' + [time]), sheet.getRange(row, 1, 1, dataLength).copyTo(sheet.getRange(copyRow,1)), sheet.insertRowsBefore(lastR,1), sheet.deleteRow(row); break; } } };

投稿2016/11/05 17:03

true

総合スコア440

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

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

nisioisn

2016/11/06 01:21

御助力ありがとうございました!おかげさまで上手く動作するようになりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問