Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script 如何修复谷歌工作表中损坏的导入在线excel?_Google Apps Script_Web Scraping_Google Sheets_Google Drive Api - Fatal编程技术网

Google apps script 如何修复谷歌工作表中损坏的导入在线excel?

Google apps script 如何修复谷歌工作表中损坏的导入在线excel?,google-apps-script,web-scraping,google-sheets,google-drive-api,Google Apps Script,Web Scraping,Google Sheets,Google Drive Api,我需要这个在线excel: 在我的google工作表中,但当我使用Importdata公式时,如下所示: 导入数据(“https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0)) 事实证明,它是以如下方式导入的: 但原始在线文件如下所示: 我该怎么解决呢?我相信你的目标如下 您希望将从URL下载的XLSX数据中的值放入Google电子表格的活动工作表中 问题和解决方法: 在现阶段,Google电子表格的内置函数中似乎

我需要这个在线excel:

在我的google工作表中,但当我使用Importdata公式时,如下所示: 导入数据(“https://members.tsetmc.com/tsev2/excel/MarketWatchPlus.aspx?d=0))

事实证明,它是以如下方式导入的:

但原始在线文件如下所示:


我该怎么解决呢?

我相信你的目标如下

  • 您希望将从URL下载的XLSX数据中的值放入Google电子表格的活动工作表中
问题和解决方法: 在现阶段,Google电子表格的内置函数中似乎没有直接从URL的XLSX数据中检索数据的方法。所以在这个答案中,我想建议使用谷歌应用程序脚本来实现您的目标。当使用GoogleApps脚本时,您的目标就可以实现了

示例脚本的流程如下所示

  • 检索XLSX数据
  • 将XLSX数据转换为Google电子表格作为临时电子表格
  • 从转换后的电子表格中检索值
  • 将转换后的电子表格中的值放入活动工作表
  • 删除临时电子表格
  • 示例脚本: 请将以下脚本复制并粘贴到Google电子表格的脚本编辑器中。在使用此脚本之前。请在脚本编辑器中运行
    myFunction
    。这样,XLSX数据的值被放入活动工作表中

    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);
    }
    
    • 如果要将值放入特定的工作表和范围,请修改
      4的脚本。将转换后的电子表格中的值放入活动工作表。
    参考资料:

    谢谢。我复制了此脚本,但遇到了一个错误:11:20:38 AM错误引用错误:未定义驱动器myFunction@Code.gs:7我猜是因为未启用驱动器API@Morteza贾法里·阿马尔德感谢您的回复。我不得不为我糟糕的英语水平道歉。使用此示例脚本时,请在Advanced Google services上启用驱动器API。您可以在上看到如何启用驱动器API。启用驱动器API后,请再次测试。谢谢amazing@Morteza贾法里·阿马尔德感谢您的回复。我能理解你的问题已经解决了。我很高兴。