追記
エラーが出ていたのは、forEachの閉じカッコが足りていないためでした、すみません!
あと、var values = sheet1.getRange('a:bf').getValues(); ここのシートの指定がsheetになっていたたので、sheet1に変更してます。
これでいけると思います。
gas
1function myFunction() {
2 var spreadsheet = SpreadsheetApp.openById('スプレッドキー1');
3 var sheet1 = spreadsheet.getSheetByName('シート1'); //[todo]シート名を指定
4
5 var spreadsheet2 = SpreadsheetApp.openById('スプレッドキー2');
6 var sheet2 = spreadsheet2.getSheetByName('シート2'); //[todo]シート名を指定
7
8
9 var values = sheet1.getRange('a:bf').getValues();
10
11 //a1のセルはvalues[0][0]に入ってます。
12 if(values[0][0] == "変更する"){
13 //[todo]変更するだった場合の処理
14 //setValue 1セルだけの処理だと重たくなるため、極力、getValues, setValuesの複数形がおすすめ
15 //a:brの値だけ取り出す setValues は2次元配列じゃないと貼り付け出来なのでこの形に
16
17 var setValues = []
18 values.forEach(e=>{//取得したすべての値を確認する。
19 if(e[0] =="変更する"){
20 setValues.push(e) // "変更する"のときの行の配列
21 }
22 })
23 //シートへの貼り付け
24 //[todo]必要であればシートのクリアを
25 sheet2.getRange(1,1,setValues.length,setValues[0].length).setValues(setValues)
26 }
27}
追記
コメント確認しました。
そうするとこんな感じになりますね。
eがどうなってるかわからない場合は、
console.log()やデバッグを使って確認してみてくださいね!
gas
1
2var setValues = []
3values.forEach(e=>{ //取得したすべての値を確認する。
4 if(e[0] =="変更する"){
5 setValues.push(e) // "変更する"のときの行の配列
6 }
7}
8
9//シートへの貼り付け
10//[todo]必要であればシートのクリアを
11
12sheet2.getRange(1,1,setValues.length,setValues[0].length).setValues(setValues)
13
14
全部書いてしまいましたがこんな感じです!
[todo]と書いてあるところが質問者さんが変更すべき箇所です。
gas
1function myFunction() {
2 var spreadsheet = SpreadsheetApp.openById('スプレッドキー');
3 var sheet1 = spreadsheet.getSheetByName('シート1'); //[todo]シート名を指定
4
5 var spreadsheet2 = SpreadsheetApp.openById('スプレッドキー');
6 var sheet2 = spreadsheet2.getSheetByName('シート2'); //[todo]シート名を指定
7
8
9 var values = sheet.getRange('a:bf').getValues();
10 //↑これでもいいですし、面倒であれば全データを↓取得でもOKです。A:BFまでのいずれかに確実に値が入っているなら。
11 var values = sheet1.getDataRange().getValues();
12
13 //a1のセルはvalues[0][0]に入ってます。
14 if(values[0][0] == "変更する"){
15 //[todo]変更するだった場合の処理
16
17
18 //setValue 1セルだけの処理だと重たくなるため、極力、getValues, setValuesの複数形がおすすめ
19 //a:brの値だけ取り出す setValues は2次元配列じゃないと貼り付け出来なのでこの形に
20 var setValues = []
21 setValues.push(values[0]) //values[0] は1行目のセルの配列
22
23 //すでにsheet2に値が入っている場合は、sheet2.clear()などで消した方がいいです。
24
25 //setValuesを使うときはこの書き方。[開始する行、開始する列,貼り付ける配列の長さ,貼り付ける2次元配列の長さ]
26 sheet2.getRange(1,1,setValues.length,setValues[0].length).setValues(setValues)
27 }
28}
29