ーーーー
// ▼ ここにチャネルアクセストークンを貼り付ける(クォートの内側) const TOKEN = 'ここにトークンを貼り付ける'; function getDailyFollowers() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0]; // 前日の日付をつくる const target = new Date(); target.setDate(target.getDate() - 1); const dateStr = Utilities.formatDate(target, 'Asia/Tokyo', 'yyyyMMdd'); const displayDate = Utilities.formatDate(target, 'Asia/Tokyo', 'yyyy/MM/dd'); // LINEに問い合わせる const url = `https://api.line.me/v2/bot/insight/followers?date=${dateStr}`; const res = UrlFetchApp.fetch(url, { headers: { Authorization: `Bearer ${TOKEN}` }, muteHttpExceptions: true }); // 通信に失敗していないか if (res.getResponseCode() !== 200) { console.log(`エラー ${res.getResponseCode()}:${res.getContentText()}`); return; } const data = JSON.parse(res.getContentText()); // LINE側の集計がまだ終わっていない日は書き込まない if (data.status !== 'ready') { console.log(`集計待ち(status=${data.status})。時間を置いて再実行してください。`); return; } const lastRow = sheet.getLastRow(); // 同じ日付を二重に書かない if (lastRow > 1) { const prev = sheet.getRange(lastRow, 1).getValue(); const prevStr = (prev instanceof Date) ? Utilities.formatDate(prev, 'Asia/Tokyo', 'yyyy/MM/dd') : String(prev); if (prevStr === displayDate) { console.log('この日付はすでに記録済みです'); return; } } // 前日比の増加数を計算 let added = ''; if (lastRow > 1) { const prevValue = sheet.getRange(lastRow, 2).getValue(); if (typeof prevValue === 'number' && prevValue > 0) { added = data.followers - prevValue; } } sheet.appendRow([displayDate, data.followers, added, data.targetedReaches, data.blocks]); console.log(`記録:${displayDate} / ${data.followers}人`); }
ーー