如何修复 google sheet 中损坏的在线导入 excel?
How to fix corrupted imported online excel in google sheet?
我需要这个在线 excel:
https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0
在我的 google sheet 中,但是当我使用如下 Importdata 公式时:
Importdata("https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0")
原来是这样以损坏的方式导入的:
enter image description here
但是网上的原文件是这样的:
enter image description here
我该如何解决?
我相信你的目标如下。
- 您想将从 URL 下载的 XLSX 数据的值放到 Google Spreadsheet.
的活动 sheet
问题和解决方法:
目前阶段,Google Spreadsheet的内置函数中似乎没有直接从URL的XLSX数据中检索数据的方法。因此,在这个答案中,我想建议使用 Google Apps 脚本来实现您的目标。当使用 Google Apps 脚本时,您的目标就可以实现。
示例脚本的流程如下。
- 检索 XLSX 数据。
- 将 XLSX 数据转换为 Google Spreadsheet 作为时间 Spreadsheet。
- 从转换后的 Spread 中检索值sheet。
- 将转换后的 Spreadsheet 中的值放入活动 sheet。
- 删除时间传播sheet。
示例脚本:
请将以下脚本复制并粘贴到 Google Spreadsheet 的脚本编辑器中。在您使用此脚本之前,please enable Drive API at Advanced Google services。并请 运行 在脚本编辑器中 myFunction
的功能。通过这种方式,XLSX 数据的值被放入活动 sheet.
function myFunction() {
// 1. Retrieve XLSX data.
const url = "https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0"; // This is your URL.
const blob = UrlFetchApp.fetch(url).getBlob();
// 2. Convert XLSX data to Google Spreadsheet as the temporal Spreadsheet.
const id = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_SHEETS}, blob).id;
// 3. Retrieve values from the converted Spreadsheet.
const values = SpreadsheetApp.openById(id).getSheets()[0].getDataRange().getValues();
// 4. Put the values from the converted Spreadsheet to the active sheet.
const dstSheet = SpreadsheetApp.getActiveSheet();
dstSheet.getRange(1, 1, values.length, values[0].length).setValues(values);
// 5. Remove the temporal Spreadsheet.
DriveApp.getFileById(id).setTrashed(true);
}
- 如果你想把值放到特定的sheet和范围内,请修改
4. Put the values from the converted Spreadsheet to the active sheet.
的脚本。
参考文献:
我需要这个在线 excel: https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0
在我的 google sheet 中,但是当我使用如下 Importdata 公式时: Importdata("https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0")
原来是这样以损坏的方式导入的: enter image description here
但是网上的原文件是这样的: enter image description here
我该如何解决?
我相信你的目标如下。
- 您想将从 URL 下载的 XLSX 数据的值放到 Google Spreadsheet. 的活动 sheet
问题和解决方法:
目前阶段,Google Spreadsheet的内置函数中似乎没有直接从URL的XLSX数据中检索数据的方法。因此,在这个答案中,我想建议使用 Google Apps 脚本来实现您的目标。当使用 Google Apps 脚本时,您的目标就可以实现。
示例脚本的流程如下。
- 检索 XLSX 数据。
- 将 XLSX 数据转换为 Google Spreadsheet 作为时间 Spreadsheet。
- 从转换后的 Spread 中检索值sheet。
- 将转换后的 Spreadsheet 中的值放入活动 sheet。
- 删除时间传播sheet。
示例脚本:
请将以下脚本复制并粘贴到 Google Spreadsheet 的脚本编辑器中。在您使用此脚本之前,please enable Drive API at Advanced Google services。并请 运行 在脚本编辑器中 myFunction
的功能。通过这种方式,XLSX 数据的值被放入活动 sheet.
function myFunction() {
// 1. Retrieve XLSX data.
const url = "https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0"; // This is your URL.
const blob = UrlFetchApp.fetch(url).getBlob();
// 2. Convert XLSX data to Google Spreadsheet as the temporal Spreadsheet.
const id = Drive.Files.insert({title: "temp", mimeType: MimeType.GOOGLE_SHEETS}, blob).id;
// 3. Retrieve values from the converted Spreadsheet.
const values = SpreadsheetApp.openById(id).getSheets()[0].getDataRange().getValues();
// 4. Put the values from the converted Spreadsheet to the active sheet.
const dstSheet = SpreadsheetApp.getActiveSheet();
dstSheet.getRange(1, 1, values.length, values[0].length).setValues(values);
// 5. Remove the temporal Spreadsheet.
DriveApp.getFileById(id).setTrashed(true);
}
- 如果你想把值放到特定的sheet和范围内,请修改
4. Put the values from the converted Spreadsheet to the active sheet.
的脚本。