前提・実現したいこと
スプレッドシートA(転記元)に書き込まれたらスプレッドシートB(転記先)へ転記するgasを組んでいます。
リンクをキーにして、今までにすでに転記したものは飛ばし、まだ転記してないものを最終行に転記する、というふうにしたく
繰り返し処理を使っています。
ここに質問の内容を詳しく書いてください。
(例)PHP(CakePHP)で●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
取得まではうまくいっているのですが、最終行に転記するというところがどうしてもうまくいきません。
例えば転記するものが2つあったとしたら、当初の最終行に2つともが上書きされて転記されてしまいます。(結果的に1つのみが転記された状態)
1つが転記されたら、またその次の行に転記したいのですが、
Sheet_CopyTo.getRange(Lastrow,1).setValue([●●●]);
Lastrowではだめなのでしょうか。
該当のソースコード
function myFunction() { //元データ取得 var SS_CopyFrom =SpreadsheetApp.openById("1yCj10xjobcbh9yewktYLEh2fmqAK3oirOgP8UoYAetQ"); var Sheet_CopyFrom = SS_CopyFrom.getSheetByName('転記元'); //元データの最終行を取得 var LastRow = Sheet_CopyFrom.getLastRow(); //最終行を取得 //貼り付け先のスプレッドシートのIDを指定してシート名を指定する <転記先テスト> var SS_CopyTo = SpreadsheetApp.openById("11-7GvhoLJ4GI4ifhh-kwYBi3HYKA_039oSMqbx77HxY"); var Sheet_CopyTo = SS_CopyTo.getSheetByName('転記先'); //転記先データの最終行を取得 var Lastrow = Sheet_CopyTo.getLastRow()+ 1; //最終行を取得 //繰り返し処理 for(let i = 1; i <= LastRow; i++) { //リンクを取得する。 var Link = Sheet_CopyFrom.getRange(i,1).getValue(); //リンクが今までにあったか検索する。 const values = Sheet_CopyTo.getRange(1, 5, Sheet_CopyTo.getLastRow()).getValues().flat(); console.log(values.indexOf(Link)); if (values.indexOf(Link)== -1) { //存在しない場合に実施したい処理 //日付を取得する。 var Day = Sheet_CopyFrom.getRange(i,2).getValue(); //タイトルを取得する。 var Title = Sheet_CopyFrom.getRange(i,5).getValue(); //企業名を取得する。 var Company = Sheet_CopyFrom.getRange(i,4).getValue(); //コピーした日付を貼り付ける。 Sheet_CopyTo.getRange(Lastrow,1).setValue([Day]); //コピーしたタイトルを貼り付ける。 Sheet_CopyTo.getRange(Lastrow,2).setValue([Title]); //コピーした企業名を貼り付ける。 Sheet_CopyTo.getRange(Lastrow,3).setValue([Company]); } } }
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/01/17 03:16
退会済みユーザー
2022/01/17 15:26