シートA と
A列 B列 C列 D列 E列 1 シューズ 3 カバン 4 ハット 5 ジャケット 4 ハット 1 シューズ 8 バックパック
シートBがあり、
A列 B列 C列 D列 E列 1 バックパック 2 シューズ 3 バックパック 4 ハット 5 ハット 6 カバン 7 ジャケット
シートBのB列にシートAの A列の数字を入れて、
A列 B列 C列 D列 E列 1 8 バックパック 2 1 シューズ 3 8 バックパック 4 4 ハット 5 4 ハット 6 3 カバン 7 5 ジャケット
こういう風な形にしたいです。
下記のようなコードを書いて
function myFunction() { var ss = SpreadsheetApp.openById('xxxxxxx'); var logsheet = ss.getSheetByName('A'); var logLastRow=logsheet.getLastRow(); var logLastRow= logLastRow.toFixed(0); for(y=2; y<=logLastRow;y++){ var logvalue = logsheet.getRange(y,3).getValue(); Logger.log(logvalue); }// y for for(n=2;n<=930;n++){ var ss = SpreadsheetApp.openById('xxxxxxx'); var sheet = ss.getSheetByName('B'); var value = sheet.getRange(n,5).getValue(); Logger.log(value); var valueid = sheet.getRange(n,1).getValue(); Logger.log(valueid); }// n for }
このfor文を元に
if文などを書いてみたりしたのですが、うまく行きません。
知識のある方どうかご教授ください。
よろしくお願いします。
最初のvar ss =…の行番号をクリックし赤●を付けて虫ボタン→ステップインボタンを1行ずつクリックして考え通りの動きをしているか、無駄な動きや命令文がないか自分で検証してみてください。B列の値の定義をしてください。if文を試して比較をどのようにしたのかまで記述してください。セルに値を記入するsetValue()について調べてください。
解決しました!ありがとうございます!ただ行数が3000となってくると動かなくなってしまいます。何か対処の仕方はありますでしょうか???
実はsetValue()を1セルずつ実行すると、対象データ量に比例して時間を要します。setValue()を使いこなせたら、次はgetValues()とsetValues()にトライしてみましょう。配列処理の知識が必要になります。こちらの先人の知恵を参照して頑張ってください ① https://tonari-it.com/gas-spreadsheet-speedup/ ②https://teratail.com/questions/31137 の2番目の回答 。それでもタイムアウトが起きるようであれば、別の手段をとります
返信が大変遅くなってしまい申し訳ありません。大変わかりやすいページを教えていただきありがとうございます。教えていただいたものでできることはできるのですがやはり3000ほどの値と950ほどの値の一致だと難しいみたいです、、。for文の中にfor文を作りその中にif文で一致させています、、、。
あなたの回答
tips
プレビュー