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

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

ただいまの
回答率

88.23%

gasでデータを貼り付けた後に、実行日時をA列に自動記入させたい

受付中

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,483

ogumogu

score 7

Google Apps Scriptで質問があります。
宜しくお願い致します。

現在、以下の2がうまく動きません。

1.sheet1の特定範囲のデータをsheet2の最終行のB列に貼り付ける。(毎週)
2.さらに貼り付けた日時をA列に残したい。

1は下記URLを参照になんとか動くようになったのですが、
2の部分が1を実行しても、更新されません。
2はsheet2の方に書いており、トリガーは、スプレッドシートの値の変更にしています。

1の参照URL
https://teratail.com/questions/112154
https://teratail.com/questions/106446

2の参照URL
http://bonheur.hatenablog.jp/entry/2017/06/30/130437
https://qiita.com/Yamotty/items/888ae6f93a05a8cfc16f

初心者で表現がわかりづらいかもしれませんが、どなたかアドバイスをいただけないでしょうか。何卒よろしくお願いいたします。

2のコード

function insertLastUpdated() {
  var ss = SpreadsheetApp.getActiveSheet(); 
  var currentRow = ss.getActiveCell().getRow(); 
  var currentCell = ss.getActiveCell().getValue(); 
  var updateRange = ss.getRange('A' + currentRow) 
  Logger.log(updateRange);

  if(currentRow>1){ 
    if(currentCell) { 
      updateRange.setValue(new Date());
    }
  }
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/03/07 23:01

    とりあえずの回答はしておきましたが、1の処理も提示していただければもっと問題点が明確になると思いますよ。

    キャンセル

回答 1

0

意図があって処理を分割したのか、よくわからないけど分割して構築したか、ということも気になりますが、無駄が多いので、ロジックとしては以下のように一連の流れとして行うほうが良いと思いますよ。
特定範囲が複数行である前提です。

  1. sheet1から特定範囲のデータを取得するgetRange({特定範囲}).getValues()
  2. 取得データは二次元配列なので、ループでそれぞれ先頭に本日の日付をunshift()する
  3. sheet2の最終行以下に成形データをセットするsetValues({成形データ})

一応、追記・修正依頼もしておきますが、1の処理も提示していただければもっと問題点が明確になると思いますよ。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/03/08 09:59

    アドバイスありがとうございます。stshishoさんのご指摘通り、無駄が非常に多いかと思います。。
    sheet1のコードは以下のとおりです。
    (sheet1は複数シートあり、A1~EZ199までのデータを毎週、sheet2の最終行のB列にセットする。Sheet1のデータは、1~199まで全てにデータがあるわけではなく、空白セルや空白行も存在しています)

    function copy() {

    var ss_copyFrom = SpreadsheetApp.getActiveSpreadsheet();
    var ss_copyTo = SpreadsheetApp.openById('sheet2');
    var sheet_copyFrom = ss_copyFrom.getSheetByName('sheet1のファイル名');

    var lr = sheet_copyFrom.getLastRow();
    var lc = sheet_copyFrom.getLastColumn();
    var copyRange = sheet_copyFrom.getRange(1,1,199,156);

    var sheet_copyTo = ss_copyTo.getSheetByName('sheet2のファイル名');
    var lastRow = sheet_copyTo.getLastRow();
    var lastRow1 = lastRow + 1;

    var copyValues = copyRange.getValues();
    sheet_copyTo.getRange(lastRow1,2,199,156).setValues(copyValues);
    }

    キャンセル

  • 2018/03/08 10:43

    結論から申しますと、最初に提示された2のコードは不要です。
    1のコードを当方が提示したロジックに沿って修正されれば良いかと思います。
    具体的には以下の部分になりますが、空行を削除する必要がある場合はcopyValues.filter({空行削除処理})を挟みます。

    //1. sheet1から特定範囲のデータを取得する
    var copyValues = copyRange.getValues();

    //1.5 必要ならば空行削除処理

    //2. copyValuesに対しループでそれぞれ先頭に本日の日付をunshift()する
    var today = new Date();
    /* ループ処理 */

    //3. sheet2の最終行以下に成形データをセットする
    sheet_copyTo.getRange(lastRow1,1,{配列の長さ},{列数}).setValues(copyValues);

    動作確認はしておりませんので、参考までに。
    頑張ってみてください。

    キャンセル

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

  • ただいまの回答率 88.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る