前提・実現したいこと
trelloのカードからとったshortURLをcardsshortURLに、スプレッドシートからとったshortURLをsheetshortURLという配列に入れています。スプレッドシートの方に入っているshortURLはtrelloのものを転記しただけなので順番と内容は同じです
trelloに新しいカードを追加した際に、追加した順番通りにスプレッドシートの方に転記したいです。最後の方でcardsshortURLとsheetshortURLが一致するかfor文内で確認し、一致しない場合はその場所で行を1行入れたいです。どのようにしたら良いのでしょうか。
発生している問題・エラーメッセージ
特になし
該当のソースコード
1function createCards(){ 2 3 //-----追加するカードの内容をtrelloから取得する 4 5 const trelloKey = "XXXXXXXXX";//keyを入力してください 6 const trelloToken = "XXXXXXXXX";//tokenを入力してください 7 const userName = "kodanosuke";//user nameを入力してください 8 const boardID = 'XXXXXXXXXXXXX' 9 10 /* //テンプレートのリストIDと名前の一覧 11 var list = [listID1,listID2,listID3,listID4,listID5,] 12 var prelist_name = [listNAME1,listNAME2,listNAME3,listNAME4,listNAME5,] 13 var listNum = list.length;*/ 14 15 //---torelloのカード一覧を取得し、必要な情報だけ抜き出す 16 var cardsshortURL = []; 17 var count = 0 18 19 for(var j = 0;j < listNum;j++){ 20 var url = "https://trello.com/1/lists/" + list[j] + "/cards?key=" + trelloKey + "&token=" + trelloToken; 21 var res = UrlFetchApp.fetch(url, {'method':'get'}); 22 var card = JSON.parse(res.getContentText()); 23 var cardNum = card.length 24 var list_name = prelist_name[j] 25 26 27 28 //必要なデータのKeyを指定して値を取得する 29 for(var i = 0;i < cardNum;i++){ 30 31 var name = card[i]['name'] 32 var shortURL = card[i]['shortUrl'] 33 34 //取得したここのデータをまとめて、ひとつのカード情報としてまとめる 35 count = count + 1 36 //Logger.log(count) 37 var card1 = [shortURL]; 38 39 cardsshortURL.push(card1) 40 //Logger.log(cards) 41 42 } 43 } 44 var cardsNum = cardsshortURL.length 45 //Logger.log(cards) 46 47 48 //---既存カード情報をスプレッドシートから取得する 49 var sheetsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('memo') 50 var order = sheetsheet.getRange(2, 1, sheetsheet.getLastRow()-1).getValues()//カードの順番 51 var stats = sheetsheet.getRange(2, 2, sheetsheet.getLastRow()-1).getValues()//カードの作成状況 52 var listname = sheetsheet.getRange(2, 3, sheetsheet.getLastRow()-1).getValues()//リスト名 53 var sheetshortURL = sheetsheet.getRange(2, 7, sheetsheet.getLastRow()-1).getValues()//shorturl 54 55 const ar1 = cardsshortURL; 56const ar2 = sheetshortURL; 57 58var res = ar1.filter(function(e){return ar2.filter(function(f){return e.toString() == f.toString()}).length == 0}); 59 if(res.length > 0){ 60 var count = 1 61 for(var i=0;i<cardsshortURL.length;i++){ 62 63 if(sheetshortURL[i+count] != cardsshortURL[i]){ 64 count = count+1 65 Logger.log(i) 66 sheetsheet.insertRowAfter(count + 1) 67 break 68 } 69 70 } 71 } 72 Logger.log(res) 73 //sheetsheet.getRange(1, 13, 48, 3).setValues(cards) 74 75 76 } 77
試したこと
iで順番を指定したり、countで指定したりしましたが、2行目に行が挿入されるだけになってしまいます。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。