webの情報をスプレッドシートに格納するアプリに情報を追加できない
Q&A
- 【必須】やりたい・やりたかったこと 標記の通り
let output= result.slice(result.indexOf(" front_subsidy_detail_page_url"),result.indexOf(","));
console.log(output);
この部分で、URLを抽出したいができない。どうすればいいですか?
- 【必須】起きている問題やエラーメッセージ ※できるだけ詳細に書いてください ログ 15:13:13 お知らせ 実行開始 15:13:16 情報 https://api.jgrants-portal.go.jp/exp/v1/public/subsidies/id/a0W2x000005j6ujEAA 15:13:18 情報 p 15:13:18 情報 [[Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ], [Element: ]] 15:13:18 情報 15:13:54 お知らせ 実行をキャンセルしました```
3. 【必須】ご自身で試されたこと ※できるだけ詳細に書いてください
※例1. [ xx xxx ] とGoogleで検索したが全く答えに辿り付けなかった
※例2. https://** を参考に xxx してみた
4. 関連するソースコードやスクリーンショット
function hojokin() {
// ここは SpreadsheetApp.getActiveSpreadSheet() でも良いとは思います
const spreadSheet = SpreadsheetApp.openById("1JrGBMHRITdyHKfCnaC04LkMTCTeK2wl3HodGwrbaTeI");
const sheetName1 = "シート1";
const sheetName2 = "シート2";
const sheet1 = spreadSheet.getSheetByName(sheetName1);
const sheet2 = spreadSheet.getSheetByName(sheetName2);
// headerにはAPIのレスポンスフィールドの一覧を1行目に記入しておきます
const header = sheet2.getRange("A1:I1").getValues()[0];
// シート1の検索キーワード(C11セル)の値をキーとして利用
const key = encodeURI(sheet1.getRange(11,3).getValue());
const url = `https://api.jgrants-portal.go.jp/exp/v1/public/subsidies?keyword=${key}&sort=created_date&order=DESC&acceptance=1`;
const json = JSON.parse(UrlFetchApp.fetch(url).getContentText());
const result = json["result"];
for(i=0; i<result.length; i++) {
let row = [];
for (j=0; j < header.length; j++) {
row.push(result[i][header[j]]);
}
sheet2.getRange(i+2,1, 1, header.length).setValues([row]);
}
// 再度ID列を調べ、値を取ってきてdetail列に貼り付ける
const idIndex = header.indexOf("id")+1;
const detailIndex = header.indexOf("detail")+1;
const lastRow = sheet2.getLastRow();
const idList = sheet2.getRange(idIndex+1, 1, lastRow, 1).getValues();
// そのリストごとに処理する
for(let i = 0; i < idList.length; i++) {
if (idList[i][0] === "") {
break;
}
// detail列を更新する
setDetail(sheet2, idList[i][0], sheet2.getRange(i+2, detailIndex));
}
}
0