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

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

新規登録して質問してみよう
ただいま回答率
85.35%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

Q&A

解決済

2回答

1000閲覧

指定したシートが編集されたときのみ2列目に編集日を入力する

temis

総合スコア1

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

0グッド

1クリップ

投稿2021/10/21 02:04

編集2021/10/21 02:21

前提・実現したいこと

当方GAS初心者です。
色々検索し試行錯誤しましたが、今の自分ではここまでが限界のようなので皆様のお力を拝借したく
ご教示よろしくお願いいたします。

シートが複数枚あるスプレッドシートのうち、シート3枚目の"日程"のセルが編集された場合のみ
編集されたセルの2列目に編集日を入力するようにしたいです。
トリガーはスプレッドシートから編集時に設定しています。

発生している問題

どのシートを編集した場合でも、シート3の2列目に日付が反映されるようになってしまいました。

該当のソースコード

function myFunction() { var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var sheet = spreadsheet.getSheetByName("日程"); var activerange=sheet.getActiveRange(); var activerow=activerange.getRow(); sheet.getRange(activerow, 2).setValue(new Date()); }

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

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

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

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

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

3_April_2021

2021/10/21 06:26

目的実現のために、これ以上何をすべきか全くわかりませんか、それとも期待するメソッド等を見つけることができませんか。
temis

2021/10/21 08:28

恥ずかしながら後者になります。 色々調べて試してはいるのですが、結局はどのシートを編集しても"日程"シートに日付が反映されることになってしまい、大変困っております…
3_April_2021

2021/10/21 08:51

確認前に回答を投稿しました。回答見直しと反映の時間がすぐに取れそうにないので、事前に報告します。 (問題が解決できれば締め切って大丈夫です)
3_April_2021

2021/10/21 11:47

質問と回答が過去質問と重複していませんか。
temis

2021/10/21 12:23

過去にも質問していますが、私の確認が甘かったこともあり 結局どのシートを編集しても日付が反映される結果となったため再度質問を投稿させていただきました
temis

2021/10/21 12:29

前回もif構文を使用していますが、falseの場合のコードがない為どのシートを編集した場合でも任意のシートに日付が反映される形になってしまったと予測します。 が、私の知識ではそのことに思い至らなかったこと、回答者様に早くお返事をしなければと焦った結果 確認不足で問題が解決しなかった形になります。
3_April_2021

2021/10/21 14:39

解決したい問題は変わっていなかったようですね。 また、過去の質問も忘れていなかったようですね。 もしそうなら、それは本来は基本的に回答者自身に尋ねるか質問を再開することによって対処されることが推奨されたでしょう。理由があって質問が分割されたとしても、それは過去の質問の出来事に言及することが推奨されたでしょう。このようなことを怠ると、その時の原因によっては、解決に至らない「役に立たない」回答や、過去とまったく同じ「役に立たない」回答が来ることがあります。 これを招く状況は問題解決において「役に立たない」ばかりでなく、応答ユーザに不快感は与えられても気分を良くすることはないでしょう。
temis

2021/10/21 18:00

ご丁寧にご指摘いただきありがとうございます。 3_April_2021さんの思い描く質問者になれなかったこと、大変失礼いたしました。 前回の失敗から学び、今回は無事コードが正常に動作することを確認しましたので今後はこのように回答者様に不快感を与えることもないかと思います。 お時間を割いていただきありがとうございました。
3_April_2021

2021/10/23 00:36

コメントは要求や命令で受け取られたようですね、説教愚痴のように見える場合は忘れてよいものです。イメージが共有されていて、特殊事例でない限り(私はまだ回答を綿密に見ていないので。)、if予測の答えは、回答に添付された最後の外部リンクで見つけられるでしょう。
3_April_2021

2021/10/23 01:58

訂正:最後の外部リンク>3つ目の外部リンク
guest

回答2

0

自己解決

アドバイスいただいた方法とは少し異なりますが
下記コードにて解決いたしました。

function set_last_update() { var sh=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); if (sh.getSheetName() == "日程") { var activerange=sh.getActiveRange(); var activerow=activerange.getRow(); sh.getRange(activerow, 2).setValue(new Date()); }else{ } }

投稿2021/10/21 11:07

編集2021/10/23 09:01
temis

総合スコア1

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

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

0

あくまで今理解しやすいと思われた一例手順です。


1.アクティブシートを取得します(≠スプレッドシート)【getActiveSheet

gs

1const sheet = SpreadsheetApp.getActiveSheet();

2.シートからシート名を取得します【getName

gs

1const sheet_name = sheet.getName();

3.【条件文if】によってシート名が「日程」の場合のみ処理を実行します


時間があれば【Event Object】も調べてみてください。また、念のために、現在のコードでは、この処理はシート「日程」2列目を編集するときにも実行されます。

投稿2021/10/21 08:39

編集2021/10/21 08:42
3_April_2021

総合スコア48

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問